2015-03-02 123 views
0

我在包含5個節點的鏈接列表上使用int數據調用此方法< 4,3,2,1>
我想刪除奇數整數並返回< 4 ,2>
我跑的主要方法mylist.removeOdds 這似乎是正常工作,但從來沒有刪除(分配一個節點到當前下)
輸出
此輸出保持下去,直到我終止
同時輸入條件循環
current elem耳鼻喉科前3個元素4
如果條件滿足
當前元素前3個元素4
如果條件滿足
當前元素前3個元素4
如果條件滿足從Java中的鏈接列表中刪除奇數int節點

Public void removeOdds() { 
    Node current = head; 
    Node previous=null; 
    while ((current.getNext()) != null) { 
     if (head == null) { 
      System.out.println("The list is empty"); 
     } else { 
      while (current != null && (current.getElement()) % 2 != 1) { 
       previous = current; 
       current = current.getNext(); 
       System.out.println("while condition loop entered"); 
       System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement()); 
      } 
      if ((current.getElement()) % 2 == 1) { 
       System.out.println("if condition met "); 
       previous.setNext(current.getNext()); 
       System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement()); 

      } 
     } 
    } 

回答

1

下面的語句之後 -

previous.setNext(current.getNext()); 

您需要添加此語句

current.setNext(current.getNext()); 
+0

#codeMan是正確的。在if條件滿足後,你並沒有前進。因此它會一直循環直到你終止。 – 2015-03-02 05:52:16

+0

#codeMan是的,有我的時刻。 – user3072188 2015-03-02 06:09:52

-1

您最好提供節點類的結構。

Public void removeOdds() { 
Node current = head; 
Node previous=null; 
while ((current.getNext()) != null) { 
    if (head == null) { 
     System.out.println("The list is empty"); 
    } else { 
     while (current != null && (current.getElement()) % 2 != 1) { 
      previous = current; 
      current = current.getNext(); 
      System.out.println("while condition loop entered"); 
      System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement()); 
     } 
     if ((current.getElement()) % 2 == 1) { 
      System.out.println("if condition met "); 
      previous.setNext(current.getNext()); 
      current=current.getNext(); 
      System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement()); 

     } 
    } 
} 
+0

我不遵循?有一個Node類沒有在這裏圖片,如果這就是你問的。 – user3072188 2015-03-02 06:10:48

+0

我剛剛提供的代碼已被修改,您可以將其複製到IDE以嘗試。 – 2015-03-02 08:59:55

+0

你的代碼工作,但它沒有刪除5,列表中的最後一個奇數。我認爲這與設置尾巴有關。 – user3072188 2015-03-02 16:16:00