关于栈的解释百科上已经说得很明白了,这里直接引用一下:
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
这里相对说明一下做一个区分:栈是后进先出,队列是先进先出
import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(4); String key = ""; boolean loop = true; Scanner scanner = new Scanner(System.in); while (loop) { System.out.println("s,显示"); System.out.println("e,退出"); System.out.println("push,入栈"); System.out.println("pop,出栈"); key = scanner.next(); switch (key) { case "s": 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) { System.out.println(e.getMessage()); } break; case "e": scanner.close(); loop = false; System.out.println("退出"); } } } } class ArrayStack { private int maxSize; private int[] stack; private int top = -1; 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 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\n", i, stack[i]); } } }