import java.util.Scanner;
class ArrayStackDemo{
public static void main(String[] args) {
ArrayStack arrayStack=new ArrayStack(5);
Scanner scanner=new Scanner(System.in);
String key="";
boolean loop=true;
while (loop){
System.out.println("show:表示显示栈");
System.out.println("exit:退出程序");
System.out.println("push:表示入栈");
System.out.println("pop:表示出栈");
System.out.println("getTop:表示显示栈顶元素");
System.out.println("请输入你的选择");
key=scanner.next();
switch (key){
case "show":
arrayStack.list();
break;
case "push":
System.out.println("请输入一个数:");
int val=scanner.nextInt();
arrayStack.push(val);
break;
case "pop":
try{
int res= arrayStack.pop();
System.out.println("出栈的元素是 "+res);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case "getTop":
try{
int res= arrayStack.getTop();
System.out.println("栈顶元素是 "+res);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case "exist":
scanner.close();
loop=false;
break;
default:
break;
}
}
System.out.println("程序退出");
}
}
class ArrayStack {
private int maxSize;
private int top;
private int []stack;
//构造器
public ArrayStack(int maxSize){
this.maxSize=maxSize;
top=-1;
stack=new int[maxSize];
}
//判断栈是否满了
public boolean isFull(){
return top==maxSize-1;
}
//判断栈是否空
public boolean isEmpty(){
return top==-1;
}
//进栈
public void push(int value){
if(isFull()){
System.out.println("栈满了");
return;
}
top++;
stack[top]=value;
}
//出栈
public int pop(){
if(isEmpty()){
throw new RuntimeException("栈空,没有数据");
}
int value=stack[top];
top--;
return value;
}
//获取栈顶元素
public int getTop(){
if(isEmpty()){
throw new RuntimeException("栈空,没有数据");
}
return stack[top];
}
//打印栈
public void list(){
if(isEmpty()){
System.out.println("栈空,没有数据");
return;
}
for(int i=top;i>=0;i--){
System.out.printf("stack[%d]=%d\n",i,stack[i]);
}
}
}
Java数据结构——栈的初始化、判断栈空/满、进栈、出栈、获取栈顶元素、打印栈
最新推荐文章于 2024-07-21 22:27:18 发布