数组模拟stack
package com.cxy.springdataredis.data; import java.util.Scanner; public class StackDemo { public static void main(String[] args) { //测试一下ArrayStack 是否正确 //先创建一个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\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("程序退出~~~"); } } class ArrayStack{ private int top =-1; private int maxSize; private int[] stack; 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; } public void push(int n){ if (isFull()){ throw new RuntimeException("栈以满"); } top++; stack[top] =n; } public int pop(){ if (isEmpty()){ throw new RuntimeException("栈为空"); } System.out.println(stack[top]); 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]); } } }
笔记转移,由于在有道云的笔记转移,写的时间可能有点久,如果有错误的地方,请指正