我在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
。