我的代码出现问题,删除节点后,同一节点显示为下一个节点中的上一个节点。 试图删除节点4.
Pervious:Node:5;节点:15; NextNode:16 | Pervious:节点:15;节点:16; NextNode:29 | Pervious:节点:16;节点:29; NextNode:4 | Pervious:节点:29;节点:4; NextNode:5 | 透过:节点:4;节点:5; NextNode:15 |
删除后
Pervious:Node:5;节点:15; NextNode:16 | Pervious:节点:15;节点:16; NextNode:29 | Pervious:节点:16;节点:29; NextNode:5 | 透过:节点:4;节点:5; NextNode: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;
}
答案 0 :(得分:0)
删除项目时,您缺少一行简单的代码。您必须设置前一个元素的下一个元素,以及下一个元素的前一个元素。 你实际上错过了第二部分。 这就是代码应该是这样的:
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;