栈实现的是一种后进先出(last-in, first-out, LIFO)的策略。 栈的三种基本操作:
压入(push)弹出(pop)检查栈是否为空(empty) 三种操作的执行时间都是o(1)在java中的java.util.LinkedList能够直接实现栈的所有功能的方法,因此可以直接将LinkedList当作栈使用,并且比java.util.stack里的可取。
import java.util.LinkedList; /** * Implement a Stack by LinkedList. * (the code excerpted from thinking in java fourth edition) */ public class MyStack<T> { private LinkedList<T> storage = new LinkedList<T>(); public void push(T v) { storage.addFirst(v); } public T peek() { return storage.getFirst(); } public T pop() { return storage.removeFirst(); } public boolean empty() {return storage.isEmpty(); } public String toString() { return storage.toString(); } // test public static void main(String[] args) { MyStack<String> stack = new MyStack<>(); for(String s : "My dog has fleas".split(" ")) { stack.push(s); } while(!stack.empty()) System.out.print(stack.pop() + " "); } }