从循环链表中删除值
deleting value from Circular Linked List
我的代码有问题,删除节点后,在下一个节点中出现与前一个节点相同的节点。
正在尝试删除节点 4。
过去:节点:5;节点:15;下一节点:16 |
上一个:节点:15;节点:16;下一节点:29 |
上一个:节点:16;节点:29;下一个节点:4 |
上一个:节点:29;节点:4;下一个节点:5 |
上一个:节点:4;节点:5;下一个节点:15 |
移除后
过去:节点:5;节点:15;下一节点:16 |
上一个:节点:15;节点:16;下一节点:29 |
上一个:节点:16;节点:29;下一个节点:5 |
上一个:节点:4;节点:5;下一个节点:15
public Node deleteValue(int i) {
Node node = start;
do {
if (node.next.getData() == i) {
Node n = node.next;
node.next = n.next;
size--;
if (n == start) {
start = node;
}
return n;
}][1]
node = node.next;
} while(node != start);
return null;
}
当您删除您的项目时,您会遗漏一行简单的代码。您必须设置前一个元素的下一个元素,以及下一个元素的前一个元素。
你实际上错过了第二部分。
代码应该是这样的:
Node current = start;
do{
if(current.getData() == i){
// set the previous's next element
current.previous.next = current.next;
// set the next element's previous element
current.next.previous = current.previous;
this.size--;
return current;
}
current = current.next;
}while(node != start);
return null;
我的代码有问题,删除节点后,在下一个节点中出现与前一个节点相同的节点。 正在尝试删除节点 4。
过去:节点:5;节点:15;下一节点:16 | 上一个:节点:15;节点:16;下一节点:29 | 上一个:节点:16;节点:29;下一个节点:4 | 上一个:节点:29;节点:4;下一个节点:5 | 上一个:节点:4;节点:5;下一个节点:15 |
移除后
过去:节点:5;节点:15;下一节点:16 | 上一个:节点:15;节点:16;下一节点:29 | 上一个:节点:16;节点:29;下一个节点:5 | 上一个:节点:4;节点:5;下一个节点:15
public Node deleteValue(int i) {
Node node = start;
do {
if (node.next.getData() == i) {
Node n = node.next;
node.next = n.next;
size--;
if (n == start) {
start = node;
}
return n;
}][1]
node = node.next;
} while(node != start);
return null;
}
当您删除您的项目时,您会遗漏一行简单的代码。您必须设置前一个元素的下一个元素,以及下一个元素的前一个元素。 你实际上错过了第二部分。 代码应该是这样的:
Node current = start;
do{
if(current.getData() == i){
// set the previous's next element
current.previous.next = current.next;
// set the next element's previous element
current.next.previous = current.previous;
this.size--;
return current;
}
current = current.next;
}while(node != start);
return null;