如何删除循环链表中的节点

时间:2014-10-12 12:33:49

标签: java circular-list

我在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;
        }

    }

}

1 个答案:

答案 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