package datastructure; import javax.xml.soap.Node; import java.util.LinkedList; import java.util.Scanner; public class DoubleLinkedListDemo { public static void main(String[] args) { //测试一下 ArrayStack 是否正确 //先创建一个 ArrayStack 对象->表示栈 ArrayStack arrayStack = new ArrayStack(4); String key = ""; boolean loop = true; //控制是否退出菜单 Scanner scanner = new Scanner(System.in); System.out.println("show:表示显示栈"); System.out.println("exit:退出程序"); System.out.println("push:入栈"); System.out.println("pop:出栈"); while (loop){ System.out.println("请输入你的选择"); key = scanner.next(); switch (key){ case "show": arrayStack.list(); break; case "push": System.out.println("请输入一个数"); int value = scanner.nextInt(); arrayStack.push(value); break; case "pop": try { int res = arrayStack.pop(); System.out.printf("出栈的是数据为%d\n",res); } catch (Exception e) { e.printStackTrace(); } break; case "exit": scanner.close(); loop = false; break; default: System.out.println("wrong instructions"); } } System.out.println("程序退出了"); } } //定义一个 ArrayStack 表示栈 class ArrayStack{ private int maxSize;// 栈的大小 private int[] stack; // 数组,数组模拟栈,数据就放在该数组 private int top = -1;// 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]); } } }