Stack,或者称之为堆,是一个很经典的数据结构,其特性也是极为明显,就真的如同一个堆一样,先进来的数据到了最下面,之后来的则是一点点的往上面垒;再取出数据的时候,则是先取出最上面的数据,之后再从上向下逐个取出,如此Stack便遵循着LIFO(后入先出)的规则,这也是Stack最核心的性质了。
在Stack中,我们一般用push来代表插入元素的操作,而取出则是用pop,接下来我将分别用链表和数组来实现Stack数据结构。
链表
public class LinkedStack<T> {
private class Node<T> {
T value;
Node next;
}
private Node<T> head = null;
public boolean isEmpty() {
return head == null;
}
public void push(T value) {
Node<T> temp = head;
head = new Node<T>();
head.value = value;
head.next = temp;
}
public T pop() {
Node<T> temp = head;
head = head.next;
return temp.value;
}
}