定义
栈是一个限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
特点
- 后进先出(LIFO)
图形
image.png
手写Stack
public class Stack<E> { private Object[] data; private int size; public Stack(int capacity) { data = new Object[capacity]; } public void push(E e) { //压栈 if(size == data.length) throw new IndexOutOfBoundsException(); data[size++] = e; } @SuppressWarnings("unchecked") public E peek(){ return (E) data[size-1]; } @SuppressWarnings("unchecked") public E pop() { //出栈 if (size == 0) return null; E c = (E) data[--size]; data[size] = null; return c; } public boolean isEmpty() { return size == 0; } }