当我们改变另一个指向同一地址的指针时,指针是否会被改变
撤消链接列表的代码
Node Reverse(Node node) {
Node prev = null;
Node current = node;
Node next = null;
Node n = null;
while (current != null) {
n = current;
next = current.next; //this works
n.next = prev;
// next = current.next; //this does not
prev = n;
current = next;
}
node = prev;
return node;
}
的疑问: Node n如何影响节点当前。当我写n.next时,当前受到影响,但为什么呢?
答案 0 :(得分:2)
@Gaurav Anand
是的,它确实会影响当前的值,因为节点当前和n具有相同的地址,对任一变量所做的任何更改都将反映在地址中的值将发生变化。< / p>
在你的代码中:
当next = current.next放在n.next = prev之后它不起作用,因为你已经将 n.next 的值更改为与 current.next相同为NULL (prev = NULL)因为节点当前和n具有相同的地址。
所以,如果你在n.next = prev之后使用place next = current.next,那么current = NULL并且循环将停止迭代。
答案 1 :(得分:1)
这是因为n仅指向当前。 2个引用指向同一个对象,因此当您更改n.next时,更改也会反映在current.next中