/**
* @author zz
* @version 1.0
*/
@SuppressWarnings({"all"})
public class SqStack<E>{ //顺序栈泛型类型
final int initcapacity=10;//初始变量
private int capity;//存放顺序栈的容量
Object[] data;//存放顺序栈中的元素
private int top;//存放栈顶的指针
public SqStack(){//构造方法
data =new Object[initcapacity];
capity=initcapacity;
top=-1;
}
//扩容(数组替代)
public void ensureCapacity( int minCapacity){
if(minCapacity<capity){
return;
}
Object[] t = new Object[minCapacity];
for (int i = 0; i < top; i++) {
t[i]=data[i];
}
data=t;
capity=minCapacity;
}
//测试栈是否为空
public boolean emty(){
return top==-1;
}
//查看栈顶元素,不删除它
public E peek(){
if(emty()){
return null;
}else{
return (E) data[top];
}
}
//删除栈顶元素,返回对象
public E pop(){
if(emty()){
return null;
}else{
E e= (E)data[top];
top--;
return e;
}
}
//进栈
public E push(E item){
//判断是否栈满,是的话扩容
if(top==capity-1){ //初始存储从零开始
ensureCapacity(capity+capity/2);
}
top++;
data[top]=item;
return item;//官方API就是这么写的
}
public static void main(String[] args) {
SqStack<String> stack = new SqStack<>();
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
stack.push("e");
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
java语言编写栈运行流程
最新推荐文章于 2024-07-21 22:27:18 发布