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



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

怎么样

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

它正确地删除了中间的头,它将简单地拒绝删除最后一个元素(当列表只包含一个元素时)

注意:当您要求循环链表时,我假设最后一个元素的下一个元素有head

最新更新