入栈:
出栈:
代码:
1 import java.util.Scanner; 2 3 public class ArrayStackTest { 4 public static void main(String[] args) { 5 ArrayStack stack = new ArrayStack(4); 6 String key = ""; 7 //控制是否退出菜单 8 boolean loop = true; 9 Scanner scanner = new Scanner(System.in); 10 11 while(loop) { 12 System.out.println("s: 表示显示栈"); 13 System.out.println("e: 退出程序"); 14 System.out.println("a: 表示添加数据到栈(入栈)"); 15 System.out.println("p: 表示从栈取出数据(出栈)"); 16 System.out.println("l: 查看栈顶元素"); 17 System.out.println("请输入你的选择"); 18 key = scanner.next(); 19 switch (key) { 20 case "s": 21 System.out.println(stack.toString()); 22 break; 23 case "l": 24 try { 25 int peek = stack.peek(); 26 System.out.printf("栈顶元素:%d\n", peek); 27 } catch (Exception e) { 28 System.out.println(e.getMessage()); 29 } 30 break; 31 case "a": 32 System.out.println("请输入一个数"); 33 int value = scanner.nextInt(); 34 stack.push(value); 35 break; 36 case "p": 37 try { 38 int res = stack.pop(); 39 System.out.printf("出栈的数据是 %d\n", res); 40 } catch (Exception e) { 41 System.out.println(e.getMessage()); 42 } 43 break; 44 case "e": 45 scanner.close(); 46 loop = false; 47 break; 48 default: 49 break; 50 } 51 } 52 System.out.println("程序退出~~~"); 53 } 54 } 55 56 /** 57 * 数组实现栈 58 */ 59 class ArrayStack { 60 61 /** 62 * 栈顶指针 63 */ 64 private int top = -1; 65 66 private int[] values; 67 68 public ArrayStack(int size) { 69 values = new int[size]; 70 } 71 72 /** 73 * 判断栈是否为空 74 * @return 75 */ 76 public boolean isEmpty() { 77 return top <= -1; 78 } 79 80 /** 81 * 判断栈是否为满 82 * @return 83 */ 84 public boolean isFull() { 85 return top == values.length - 1; 86 } 87 88 /** 89 * 添加元素 90 * @param element 91 * @return 92 */ 93 public boolean push(int element) { 94 if (isFull()) { 95 System.out.println("栈已满,无法添加"); 96 return false; 97 } 98 top++; 99 values[top] = element; 100 return true; 101 } 102 103 /** 104 * 弹出元素 105 * @return 106 */ 107 public int pop() throws Exception { 108 if (isEmpty()) { 109 throw new Exception("栈为空,无法弹出"); 110 } 111 int result = values[top]; 112 top--; 113 return result; 114 } 115 116 /** 117 * 查看栈顶元素 118 * @return 119 */ 120 public int peek() throws Exception { 121 if (isEmpty()) { 122 throw new Exception("栈已空"); 123 } 124 return values[top]; 125 } 126 127 @Override 128 public String toString() { 129 if (isEmpty()) { 130 return "栈为空"; 131 } 132 StringBuilder stringBuilder = new StringBuilder(); 133 for (int i = top; i > -1; i--) { 134 stringBuilder.append(values[i] + " "); 135 } 136 return "ArrayStack{" + 137 "values=" + stringBuilder.toString() + 138 '}'; 139 } 140 }
标签:实现,System,break,int,数组,ArrayStack,println,out From: https://www.cnblogs.com/xueseng/p/17055343.html