栈
栈是一个先进后出的数据结构。出栈与入栈只能在栈顶操作,每一次的出栈入栈操作都会更新栈顶元素。
代码实现
class ArrayStack{
private int top = -1;
private int[] stack;
private int maxSize;
public ArrayStack(int maxSize){
this.maxSize = maxSize;
stack = new int[maxSize];
}
//判断栈空
public boolean isEmpty(){
return top==-1;
}
//判断栈满
public boolean isFull(){
return top==maxSize-1;
}
//入栈
public void push(int num){
if(isFull()){
System.out.println("栈满,无法入栈");
return;
}
top++;
stack[top] = num;
System.out.println("top:"+top+"//"+stack[top]);
}
//出栈
public void pop(){
if(isEmpty()){
throw new RuntimeException("栈为空,不可出栈");
}
top--;
}
//遍历输出栈
public void printStack(){
if(isEmpty()){
System.out.println("栈空");
return;
}
for(int i = top;i>=0;i--){
System.out.print(stack[i]+" ");
}
System.out.println();
}
}
思考
栈与队列同为线性结构,虽然与队列一样都有首尾,但是栈的出栈入栈只在一端进行,所以在代码实现上要比队列容易许多。