1 struct linka ;
5 void reverse(linka*& head)
18 head->next = null;
19 head = pre;
20 }
其中比較難理解的是linka*& head,傳入的其實就是linka *的型別就可以了,linka *是表示linka型別的指標,&表示head的位址,也就是linka的指標www.2cto.com
另外需要熟悉的是head->next,其實有點像c#中的head.next,就是structure中的乙個屬性.
首先定義3個指標,分別是前中後,然後當中間那個指標非空,就是當前不是空,就做迴圈裡的事情
注意的是這個演算法裡面next是在迴圈裡面賦值的
每次迴圈都把current指向previous了,然後大家都往後移乙個,next=current->next必須在current改變方向之前做,否則改變了方向之後current的next就變成previous了。
最後跳出迴圈之後,將header的next首先置空,因為head變成了最後乙個node了。然後head就變成了previous,因為當時 current和next都為null了,只有previous為最後乙個節點(或者說這時候應該是第乙個非空節點,也就是head)
終於把整個演算法理解了一遍,最後想想其實挺簡單,但是能用c++寫出來也不太容易,特別是在面試的時候。
再增加乙個遞迴的單鏈表反轉的方法:
1 static link reverselink3(link pnode) // using recursion
2
C 中經典的單向鍊錶反轉
其中比較難理解的是linka head,傳入的其實就是linka 的型別就可以了,linka 是表示linka型別的指標,表示head的位址,也就是linka的指標 另外需要熟悉的是head next,其實有點像c 中的head.next,就是structure中的乙個屬性.首先定義3個指標,分別是...
C 單向鍊錶反轉
根據我的理解,我這裡用到用到三個指標 假設有如下鍊錶 新建三個指標,資訊分別如下 head curr都指向list,而 temp指向乙個空塊 然後將curr移動到下一塊鍊錶,這時將head next指向temp 最後移動temp到head,再將head移動到curr,整個過程大概就這樣 如下 nod...
單向鍊錶反轉
於 題目 已知單向鍊錶的頭結點head,寫乙個函式把這個鍊錶逆序 intel 解答 我們假設單向鍊錶的節點如下 這個題目算是考察資料結構的最基礎的題目了,有兩種方法可以解此題 方法一 這是一般的方法,總之就是用了幾個臨時變數,然後遍歷整個鍊錶,將當前節點的下一節點置為前節點。方法二 node tem...