2014-10-12 2 views
-2

Я удаляю узел в круговом списке в java. Удаление узла в начале, середине и завершении узла. Как разобраться в этой проблемеКак удалить узел в круговом связанном списке

 public class Node { 
     int element; 
     Node next; 
      } 

Теперь есть еще один класс все методы дополнения и отображения правильно работает в циклическом списке, но мой метод удалить испытывает проблему

  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

+0

он не удаляет узел не в начале, середине и в конце, я просто испорчен! –

ответ

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 для следующего.

Смежные вопросы