数据结构与算法Java实现- 05栈

    科技2026-02-15  15

    package aStudy.day4; import java.util.Scanner; /** * @author haoqi * @Date 2020/10/1 - 13:23 */ public class data01 { public static void main(String[] args) { //测试 ArrayStack stack = new ArrayStack(5); 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\n", 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("程序退出~~~"); } } //定义一个ArrayStack 模拟栈 class ArrayStack{ private int maxSize; //栈的大小 private int[] stack; //数组模拟栈 private int top = -1;//栈顶的初始位置 //1.构造器 public ArrayStack(int maxSize) { this.maxSize = maxSize; stack = new int[this.maxSize]; //创建栈 } //2.栈满了 public boolean isFull(){ return top == maxSize-1; } //3.栈空了 public boolean isEmpty(){ return top == -1; } //4.入栈-push public void push(int value){ //判断栈是否满 if (isFull()){ System.out.println("栈满了"); return; } top++; stack[top] = value; } //5.出栈-pop,返回栈顶元素 public int pop(){ //判断栈是否空 if (isEmpty()){ //抛出异常 throw new RuntimeException("栈空了"); } int value = stack[top]; top--; return value; } //6.显示栈顶情况 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]); } }
    Processed: 0.011, SQL: 9