数组实现栈
定义
1)栈是一个先进后出的有序列表,与堆正好相反
2)栈限制列表中新增或者删除元素只能从一侧进行操作,称之为栈顶
代码实现(代码内分析)
**
* 数组实现栈
* */
public class ArrayStack {
//定义一个接收数据的数组
private int [] stack;
//最多能存储数据的个数
private int maxSize;
//定义一个栈顶
private int top;
/**
* 初始化信息
* */
public ArrayStack(int max){
this.maxSize = max;
stack = new int[maxSize];
top = -1;
}
/**
* 判断是否为空栈
* */
public Boolean isEmply(){
return top==-1;
}
/**
* 判断是否空间已满
* */
public Boolean isFull(){
//数组从0开始所以要-1
return top == maxSize-1;
}
/**
* 入栈
* */
public void addStack(int value){
//判断空间是否已满
if(isFull()){
throw new RuntimeException("空间已满");
}
//初始值为-1
top++;
stack[top] = value;
}
/**
* 出栈
* */
public void getStack(){
if(isEmply()){
throw new RuntimeException("队列为空");
}
System.out.println(stack[top]);
top--;
}
/**
* 遍历
* */
public void ergodic(){
int topHelper = top;
while(true){
if(topHelper==-1){
break;
}
System.out.println(stack[topHelper]);
topHelper--;
}
}
}
测试
public static void main(String[] args) {
ArrayStack arrayStack = new ArrayStack(10);
arrayStack.addStack(1);
arrayStack.addStack(2);
arrayStack.addStack(3);
arrayStack.addStack(4);
arrayStack.addStack(5);
System.out.println("遍历------------------------------------------------");
arrayStack.ergodic();
System.out.println("----------------------------------------------------");
arrayStack.getStack();
arrayStack.getStack();
arrayStack.getStack();
arrayStack.getStack();
arrayStack.getStack();
}
```