2013-02-22 99 views
2

我想寫我自己的隊列類。我的排隊方法只是排隊一個對象,然後如果我試圖排隊其他任何東西,它幾乎就像忽略它。這裏是我的代碼:隊列實現,排隊方法不起作用

public class myQueue { 

    private Node front; 
    private Node back; 
    private int s; 

    public myQueue() { 
      front = null; 
      back = null; 
      s = 0; 
    } 

    public void enqueue(Object x) { 
     if(isEmpty()) 
      back = front = new Node(x); 
     else 
      back = back.next = new Node(x); 
     s++; 
    } 

    public Object dequeue() { 
     Object x; 
     if(isEmpty()) { System.out.println("nothing to dequeue.\nqueue empty."); } 
     x = front.data; 
     s--; 
     return x; 
    } 

    public boolean isEmpty() { 
     if(s == 0) 
      return true; 
     else 
      return false; 
    } 

    public void printQueue() { 
     if (isEmpty()) 
      System.out.println("empty queue"); 
     else { 
      Node temp = back; 
      while(temp != null) { 
       System.out.println(temp); 
       temp = temp.next; 
      } 
     } 
    } 



} 

,這裏是我的主要方法,其中我嘗試排隊一些對象:

public static void main(String[] args) { 
    int a = 5; 
    String b = "yo"; 
    Object c = 5.5;     
    int d = 2; 
    String e = "Pen"; 
    Object f = 9.2; 

    myQueue q = new myQueue(); 

    q.enqueue(a); 
    q.enqueue(b); 
    q.enqueue(c); 
    q.enqueue(d); 
    q.enqueue(e); 
    q.enqueue(f); 

    System.out.println("\n"); 

    q.printQueue(); 
} 

,然後我得到的輸出是:

數據: 9.2

有關爲什麼會發生這種情況的任何想法?

回答

2

打印時,你已經開始在排隊的時候,你應該開始在前面:

 Node temp = front; // <<< replacing back by front 
     while(temp != null) { 
      System.out.println(temp); 
      temp = temp.next; 
     } 

如果你開始在隊列的後面,你只會有最後一個元素要打印隊列...

我的結果與修復:

data : 5 
data : yo 
data : 5.5 
data : 2 
data : Pen 
data : 9.2 
+0

啊,似乎那麼明顯,謝謝。無論出於何種原因,我將它們放在我的筆記本上,而不是從前到後,因此我想我必須從後面開始打印。謝謝! – Ted 2013-02-22 02:05:17