解决了,谢谢。我实际上在head.child的最后一个节点上添加了head.next,因此lastNode的下一次运行返回了不同的指针。
在下面的代码中,注释的代码给出了不同的结果,为什么?
我期待着同样的行为。
Node p = lastNode(head.child); //Define a extra pointer
p.next = head.next;
if(head.next!=null) head.next.prev = p;
//lastNode(head.child).next = head.next; // Not Working
//head.next.prev = lastNode(head.child);
答案 0 :(得分:0)
这与Java无关。在第一个示例中,您一次调用lastNode
并将结果存储在p
中。在第二个示例中,您两次调用lastNode
,但是在第一次调用之后,将新的最后一个节点添加到列表中,因此第二次返回的值不同!
答案 1 :(得分:0)
更改lastNode(head.child)
后对lastNode(head.child).next
进行的第二次计算将为您提供新的最后一个节点。您必须保留指向旧的最后一个节点的指针,以便更新新的最后一个节点的prev
。