小白一枚,勿喷。下边上代码
栈的过程先入后出,后入先出。
public class ArryStack {
public static void main(String[] args) {
ArrayStack as = new ArrayStack(4);
String key = "";
boolean flag = true;
Scanner sc = 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 = sc.next();
switch (key){
case "show":
as.list();
break;
case "exit":
flag = false;
case "pop":
try {
int value = as.pop();
System.out.printf("出栈的数据是%d\n", value);
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case "push":
System.out.println("请输入你要添加的数据");
int value = Integer.parseInt(sc.next());
as.push(value);
break;
default:
break;
}
}
}
}
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 isFull(){
return top == maxSize - 1;
}
//栈空
public boolean isEmpty(){
return top == -1;
}
//入栈-push
public void push(int value){
if (isFull()){
System.out.println("栈满");
return;
}
top++;
stack[top] = value;
}
//出栈-pop
public int pop(){
if (isEmpty()){
throw new RuntimeException("栈空");
}
int value = stack[top];
top--;
return value;
}
//显示栈的情况
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]);
}
}
}