使用链表能达到最优设计目标:
- 可以处理任意类型的数据
 
- 所需的空间总是和集合的大小成正比
 
- 操作所需的时间总是和集合的大小无关
 
在下面的实现代码中能看到队列和栈的区别,栈由于是后进先出,所以只涉及头部,操控一个first变量即可。队列是先进先出,所以要操控first和last两个Node变量。
java实现
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | public class Queue<Item> {   private Node first;   private Node last;   private int N;   private class Node {     Item item;     Node next;   }   public boolean isEmpty() {     return first == null;   }   public int size() {     return N;   }   public void enqueue(Item item) {     Node oldlast = last;     last = new Node();     last.item = item;     last.next = null;     if (isEmpty()) {       first = last;     } else {       oldlast.next = last;     }     N++;   }   public Item dequeue() {     Item item = first.item;     first = first.next;     if (isEmpty()) {       last = null;     }     N--;     return item;   }   public static void main(String[] args) {     Queue<String> q = new Queue<String>();     while (!StdIn.isEmpty()) {       String item = StdIn.readString();       if (!item.equals("-")) {         q.enquequ(item);       } else if (!q.isEmpty()) {         StdOut.print(q.dequeue() + " ");       }     }     StdOut.println("(" + q.size() + " left on queue"); }
  | 
 
参考
     
    全文完。