Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除循环链表中的节点_Java_Circular List - Fatal编程技术网

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

Java 如何删除循环链表中的节点,java,circular-list,Java,Circular List,我在java中删除了循环链表中的节点。删除节点开头、中间和结尾处的节点。如何解决这个问题 public class Node { int element; Node next; } 现在有另一个类,所有的add和display方法都在循环列表中正常工作,但是我的remove方法有问题 public class MyLinkedList { Node head;

我在java中删除了循环链表中的节点。删除节点开头、中间和结尾处的节点。如何解决这个问题

        public class Node {
        int element;
        Node next;
            }
现在有另一个类,所有的add和display方法都在循环列表中正常工作,但是我的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;
}
它正确地删除中间的头,当列表只包含一个元素时,它将简单地拒绝删除最后一个元素


注:当您要求循环链表时,我假设最后一个元素有头指向下一个元素。

。。。问题是?它不是移除一个节点不是在开始,中间和结束我只是一团糟!