目录
- 栈(Stack)是一个先入后出的有序列表
- 栈是一种限制线性表中元素的插入和删除,只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)
- 根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除
1.栈的模拟
使用数组模拟栈:(也可以使用单链表来表示 )
注:在数据入栈和出栈时,必须先判断栈满或栈空!
//判断栈满
public boolean isFull(){
return top == maxSize-1;
}
//判断栈空
public boolean isEmpty(){
return top==-1;
}
1)Top表示栈顶,初始化为-1
class ArrayStack{
private int maxSize; //栈的大小
private int top = -1; //栈顶,无数据时初始化为-1
private int[] stack; //数组模拟栈,数据放在该数组中
public ArrayStack(int maxSize) {
this.maxSize = maxSize;
stack = new int[this.maxSize];
}
}
2)数据入栈时,Top++,stack[Top]
//入栈操作
public void push(int value){
if(isFull()){
System.out.println("栈满!");
return;
}
top++;
stack[top] = value;
}
3)数据出栈时,int value = stack[Top] ; Top-- ; return value
//出栈操作
public int pop(){
if(isEmpty()){
throw new RuntimeException("栈空!"); //根据方法结构,此处必须要有返回值,但栈空时,没有数据要返回,所以此处吃用抛出异常来提示栈空!
}
int value =