2015-03-02 127 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