定义
栈是一个限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
特点
- 后进先出(LIFO)
图形
手写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;
}
}