2017-08-29 36 views
1

可以指針,當我們改變另一個指針指向同一個地址錯誤逆轉鏈表

代碼逆轉鏈表

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; 
} 

無疑將改變: 如何節點n影響節點電流。當我寫n.next時,目前受到影響,但爲什麼?

回答

2

@Gaurav阿南德

是的,它會影響電流,因爲節點的電流值並且n具有相同的地址,並且對任何一個變量所做的任何更改都將反映在兩者中,因爲地址處的值將會改變。

在您的代碼:
當未來= current.next放置後n.next =分組它不工作,因爲你已經改變了值n.next是相同current.next到NULL(prev = NULL)作爲節點當前和n具有相同的地址。

因此,如果您使用n.next = prev之後的next = current.next,則current = NULL,循環將停止迭代。

1

這是因爲n只指向當前。 2個引用指向同一個對象,因此當您更改n.next,變化反映在current.next以及