栈
定义:一种运算受限的线性表
特点:
- 先入后出
- 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的
一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom) - 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元
素最先删除,最先放入的元素最后删除
简单实现一个栈结构:
public class MyStack {
private int Maxsize;//定义栈大小
private int[] stack;//数组,用来模拟栈
private int top = -1;//top为栈顶,初始化为-1
public MyStack(int maxsize){
this.Maxsize = maxsize;
stack = new int[maxsize];
}
public MyStack(){}
//几个常用方法
//栈满
public boolean isFull(){
return top == Maxsize-1;
}
//栈空
public boolean isEmpty(){
return top == -1;
}
//入栈
public void push(int num){
if (isFull()){
throw new RuntimeException("stack is fulled");
}else {
top++;
stack[top] = num;
}
}
//取出栈顶元素
public int pop(){
if (isEmpty()){
throw new RuntimeException("stack is empty");
}else {
int popNum = stack[top];
top--;
return popNum;
}
}
//打印全部元素
public void showAll(){
if (isEmpty()){
throw new RuntimeException("stack is empty");
}else {
for (int i : stack){
System.out.println(i);
}
}
}
}