2014-10-12 55 views
-2

我已經刪除了java中的循環鏈表中的節點。在開始,中間和結束節點中刪除一個節點。如何來解決這個問題如何刪除循環鏈表中的節點

 public class Node { 
     int element; 
     Node next; 
      } 

現在有另一個類加載和顯示的所有方法都是在循環列表正常工作,但我的remove方法是有問題的

  public class MyLinkedList { 
        Node head; 
         void remove(int e){ 
       Node tNode = head; 
     Node pNode = head; 

     if (head.element == e) 
      while(tNode.next!=head) 
       tNode.next=head.next.next; 
     else { 

      while (tNode != head && tNode.element != e) { 

       pNode=tNode.next; 
      } 

      if (tNode != head) 
       pNode.next = tNode.next; 
     } 

    } 

} 
+0

...問題是? – ethrbunny 2014-10-12 12:35:42

+0

它不是刪除不在開始,中間和結束的節點,我只是搞砸了! – 2014-10-12 12:50:41

回答

0

什麼

private Node remove(int i) { 
    Node node = head; 
    do { 
     if (node.next.element == i) { 
      Node n = node.next; 
      node.next = n.next; 
      if (n == head) { // removal of head 
       head = node; 
      } 
      return n; 
     } 
     node = node.next(); 
    } while(node != head); 
    return null; 
} 

它正確刪除中間的頭部,它將簡單地拒絕刪除最後一個元素(當列表只包含一個元素時)

NOTA:正如你所要求的循環鏈表我假設最後一個元素的下一個元素有head