【发布时间】:2018-08-30 02:27:34
【问题描述】:
我正在编写一些代码,我需要删除循环链表中的一个项目(谁的头充当虚拟节点)并返回它(如果删除第一个节点)。我想我的代码差不多正确,但我不确定。
我理解正确吗? (从一个虚拟节点开始)
虚拟 -> A -> B -> C -> D -> 虚拟 (环绕到虚拟节点)
因此,如果我想删除第一个实际数据(A),我需要将它分配给一个临时变量。所以 Node first = head.next。然后我需要有虚拟头参考“b”所以我需要做 head.next = first.next。这就是所有需要做的事情吗?
private Node remove()
{
Node returnNode = head.next;
head.next = returnNode.next;
return returnNode;
}
在从列表中删除任何节点 N 的情况下(假设它在列表中),它是相同的概念吗?所以从上面的例子中,假设我们要删除节点 B。在这种情况下,我们需要设置 B.next = B.previous 和 B.previous = B.next 正确吗?还是我需要做类似 B.previous.next = B.next 和 B.next.previous = B.previous 的事情?是否需要遍历列表才能找到要移除的元素?
private void removeNode(Node n)
{
n.next = n.previous; // or n.previous.next = n.next
n.previous = n.next; // or n.next.previous = n.previous
}
【问题讨论】:
-
如果有人解决了您的问题或为解决方案做出了贡献,那么投票并标记包含解决方案的答案将是一种友好/最佳做法。
标签: java linked-list doubly-linked-list circular-reference