C 中經典的單向鍊錶反轉

2021-05-25 02:25:41 字數 576 閱讀 2582

其中比較難理解的是linka*& head,傳入的其實就是linka *的型別就可以了,linka *是表示linka型別的指標,&表示head的位址,也就是linka的指標

另外需要熟悉的是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++寫出來也不太容易,特別是在面試的時候。

再增加乙個遞迴的單鏈表反轉的方法:

C 中經典的單向鍊錶反轉

1 struct linka 5 void reverse linka head 18 head next null 19 head pre 20 其中比較難理解的是linka head,傳入的其實就是linka 的型別就可以了,linka 是表示linka型別的指標,表示head的位址,也就是li...

C 單向鍊錶反轉

根據我的理解,我這裡用到用到三個指標 假設有如下鍊錶 新建三個指標,資訊分別如下 head curr都指向list,而 temp指向乙個空塊 然後將curr移動到下一塊鍊錶,這時將head next指向temp 最後移動temp到head,再將head移動到curr,整個過程大概就這樣 如下 nod...

單向鍊錶反轉

於 題目 已知單向鍊錶的頭結點head,寫乙個函式把這個鍊錶逆序 intel 解答 我們假設單向鍊錶的節點如下 這個題目算是考察資料結構的最基礎的題目了,有兩種方法可以解此題 方法一 這是一般的方法,總之就是用了幾個臨時變數,然後遍歷整個鍊錶,將當前節點的下一節點置為前節點。方法二 node tem...