栈
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。(百度百科)
如图:
其中,把数据写入称为入栈或压栈(push),把数据写出称为出栈(pop)。
当栈为空,此时,栈顶=栈底
Java实现
package Stack;
//先进后出
public class Stack <T>{
private T data[]; //栈中数据
private int maxSize; //栈最大容纳量
private int top; //栈顶索引
//栈初始化
public Stack(int maxSize){
this.maxSize = maxSize;
data = (T[])new Object[maxSize];
this.top = -1;
}
//判断栈是否为空
public boolean isEmpty(){
return this.top == -1;
}
//判断栈是否已经满了
public boolean isFull(){
return this.top == maxSize - 1;
}
//压栈
public boolean push(T value){
if(isFull()){
return false;
}
top ++;
data[top] = value;
return true;
}
//取出栈顶元素,出栈
public T pop(){
if (isEmpty()){
return null;
}
T tmp = data[top];
data[top] = null;
top --;
return tmp;
}
}
待补充…
有问题或错误欢迎指正~