package com.itguigu.stack;
public class Demo {
public static void main(String[] args) {
StackDemo stackDemo = new StackDemo(5);
stackDemo.add(1);
stackDemo.add(2);
stackDemo.add(3);
stackDemo.add(4);
stackDemo.add(5);
stackDemo.pop();
stackDemo.list();
}
}
class StackDemo{
private int maxSize;//最大个数
private int[] stack;//数组模拟栈
private int top=-1;//栈的最下面的索引为-1
public StackDemo(int maxSize) {
this.maxSize = maxSize;
stack=new int[maxSize];
}
public boolean isFull(){//判断是否满了
if(maxSize<top){//当最大个数的索引小于指针的索引说明满了
return true;
}
return false;
}
public Boolean isEmpty(){//判断是否为空
if(top==-1){//如果索引还是为-1,说明没有添加数据
return true;
}
return false;
}
public void add(int n) {
if(isFull()){
System.out.println("已经满了");
return;
}
top++;//每添加一个数据top要往上移一下
stack[top]=n;
}
public void pop() {
if(isEmpty()){
System.out.println("已经空了");
return;
}
int value =stack[top];
top--;//每出来一个数据top需要往下移一下
System.out.println("弹出来的是"+value);
}
public void list(){
while (true){
if(top!=-1){
System.out.println("遍历出来的标号为"+stack[top--]);
}else {
System.out.println("没有东西你要我遍历什么");
return;
}
}
}
}