1. 程式人生 > 實用技巧 >連結串列中head->next = p;和p=head->next;之間的區別

連結串列中head->next = p;和p=head->next;之間的區別

最近這兩天在看遞迴,然後,看了幾個例子,其中有一個單鏈表反轉的例子可以使用遞迴解決,但是這裡卻有一個問題讓我迷惑了一會,就是連結串列操作中這兩句話的含義:
以下圖中的單向連結串列為例:

Node preNode = null;
Node nextNode = null;
nextNode = head.next;//1
head.next = preNode;//2

第1行語句:head.next為2這個結點,獲得這個結點後將其賦值給了nextNode變數值。
第2行語句:正確的含義是將head頭指標指向preNode這個null結點。但是我剛開始有個誤區就是,可能工作中用到連結串列的時候很少,也沒刷過題,最近才開始看資料結構和演算法部分,我想著head.next不就是2結點麼此時,將null結點賦值給2結點,但是這樣是不對的,不知道大家是否會和我一樣會這樣想,覺得有誤區,一會搞不明白。

我這裡把我想的說下,就是加入我們就按照上面我想的思路走,看看會發生什麼,就知道為啥這樣理解是不對的了。即head.next是2結點此時,將null結點賦值給2結點,那我們通過1結點向後查詢後一個結點的時候,結點還為2,那此時2結點到底為null,沒有data值,還是有值為B嘞,這樣是不是互相矛盾了。
接下來畫下圖,看的更清楚一些:
nextNode = head.next含義圖:

head.next = preNode含義圖:

有了上面的理解後,今天晚上準備再寫個反轉連結串列的文章,趁熱打鐵。希望快快進步呀,加油嘻嘻,我也學會文章里加可愛的圖了,有時候讀著親切可愛,讓略顯枯燥的程式碼生活增添一絲樂趣,可以更好地搬磚哈哈哈