栈的练习
public class ArrayStackDemo {
public static void main(String[] args) {
ArrayStack arrayStack = new ArrayStack(5);
String key="";
boolean flag = true;
Scanner input = new Scanner(System.in);
while (flag){
System.out.println("show:显示栈");
System.out.println("exit:退出栈");
System.out.println("push:加数据进栈");
System.out.println("pop:从栈中取出数据");
System.out.println("请输入你的选择");
key = input.next();
switch (key){
case "show":
arrayStack.showStack();
break;
case "push":
System.out.println("请输入一个数:");
int value= input.nextInt();
arrayStack.push(value);
break;
case "pop":
int res = arrayStack.pop();
System.out.printf("出栈的数据是:%d\n",res);
break;
case "exit":
input.close();
flag =false;
break;
}
System.out.println("程序退出~~~");
}
}
}
class ArrayStack{
private int MaxSize;
private int[] stack;
private int top = -1;
public ArrayStack(int MaxSize){
this.MaxSize = MaxSize;
stack =new int [this.MaxSize];
}
public boolean ifFull(){
return top==MaxSize-1;
}
public boolean isEmpty(){
return top==-1;
}
public void push(int value){
if(ifFull()){
System.out.println("栈满,无法加入");
return;
}
top++;
stack[top]=value;
}
public int pop(){
if(isEmpty()){
System.out.println("栈空,无法输出");
}
int value =stack[top];
top--;
return value;
}
public void showStack(){
if(isEmpty()){
System.out.println("栈空,无数据");
return;
}
for(int i=top;i>0;i--){
System.out.printf("stack[%d]=%d\n",i,stack[i]);
}
}
}