从循环链表中删除值

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;