package com.dai.stack; import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { //先创建一个ArrayStack对象 ArrayStack stack = 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": stack.list(); break; case "push": System.out.println("请输入一个数:"); int value = scanner.nextInt(); stack.push(value); break; case "pop": try { int res = stack.pop(); System.out.printf("出栈的数据是:%d ", res); } catch (Exception e) { // TODO: handle exception System.out.println(e.getMessage()); } break; case "exit": scanner.close(); loop = false; break; default: break; } } System.out.println("程序退出"); } } class ArrayStack{ private int maxSzie; private int[] stack; //数组模拟栈,数据放在这 private int top = -1; //表示栈顶,初始化为-1 public ArrayStack(int maxSize) { this.maxSzie = maxSize; stack = new int[this.maxSzie]; } //栈满 public boolean isFull() { return top==maxSzie-1; } //栈空 public boolean isEmpty() { return top == -1; } //入栈 - push 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 void list() { if(isEmpty()) { System.out.println("栈空,没有数据"); return; } for(int i=top; i>=0; i--) { System.out.printf("stack[%d] = %d ", i, stack[i]); } } }