数组栈
/** * 数组表示栈 */ public class ArrayStack { //栈的大小 private int maxSize; //数组 private int[] stack; // 栈顶 private int top = -1; public ArrayStack(int maxSize) { this.maxSize = maxSize; stack = new int[maxSize]; } // 栈满 public boolean isFull() { return top == maxSize - 1; } // 栈空 public boolean isEmpty() { return top == -1; } public void push(int num) { if (isFull()) { return; } top++; stack[top] = num; } public int pop() { if (isEmpty()) { throw new RuntimeException("栈数据为空"); } int res = stack[top]; top--; return res; } //遍历栈 public void list() { if (isEmpty()) { return; } for (int i = top; i >= 0; i--) { System.out.println(stack[i]); } } }
测试
public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(5); stack.push(1); stack.push(2); stack.push(3); stack.push(4); stack.list(); System.out.println(); stack.pop(); stack.list(); ArrayStack demo = new ArrayStack(4); String key = ""; boolean loop = true; Scanner scanner = new Scanner(System.in); while (loop) { System.out.println("show:表示显示栈"); System.out.println("exit:退出程序"); System.out.println("push:添加数据"); System.out.println("pop:取出数据"); System.out.println("请输入你的选择:"); key = scanner.next(); switch (key) { case "show": demo.list(); break; case "exit": loop = false; scanner.close(); break; case "push": System.out.println("请输入数字:"); int num = scanner.nextInt(); demo.push(num); break; case "pop": try { System.out.println(demo.pop()); } catch (Exception e) { System.out.println(e.getMessage()); } break; default: break; } } } }