从循环链接列表中删除值

时间:2017-05-03 14:06:53

标签: java circular-list

我的代码出现问题,删除节点后,同一节点显示为下一个节点中的上一个节点。 试图删除节点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;
}

1 个答案:

答案 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;