關於鍊錶逆置的遞迴和迭代方法

2022-09-05 11:42:10 字數 443 閱讀 6016

前一段日子收到cisco的面試,被問到乙個問題,對乙個單鏈表進行逆置,題目很簡單,最近對遞迴有了一些新的認識,寫下一些感想。

當你拿到乙個可以用遞迴解決的問題時,別馬上下手寫程式,基本上這樣都會失敗,你需要停下來思考一下如何用數學表示式也形式化的寫出

遞迴定義。

比如斐波那契數列,遞迴的數學表示式如下:

f(0)=1

f(1)=1

f(n)=f(n-1)+f(n-2)

有了如上的遞迴表示式,寫遞迴就會很簡單。

鍊錶逆置也一樣,如 1->2->3->4->5->null,

f(5)= return //返回逆置的煉表頭結點

f(其他) =  <-  //f(1)注意有所改變

**如下:

node* reverse(node* p) 

return prev;

}完美~~

鍊錶的逆置(迭代法與逆置法)

鍊錶翻轉操作的順序對於迭代來說是從鏈頭往鏈尾,而對於遞迴是從鏈尾往鏈頭。1 非遞迴 迭代 方式 node reverselist node h return newh 原文 原文 實現如下 看了博主的 後,大致了解迭代的方法,但由於自己c語言指標的欠缺,讀起來還是有點費力。現在注釋乙個小問題 p q...

鍊錶的逆置

5.鍊錶的逆置 已知head指向乙個帶頭節點的單向鍊錶,鍊錶中每個結點包含資料域和指標域。用鍊錶實現該鍊錶的逆置,並輸出。例如 輸入 5 整數表示要輸入的字元個數 abcde 輸出 edcba 注意 不允許通過改變每個節點的資料域來實現效果,必須改變鍊錶連線順序發生逆置。我寫的 如下 include...

鍊錶的逆置

剛剛除錯出來,趁熱寫一下。輸入多個整數,以 1作為結束標誌,順序建立乙個帶頭結點的單鏈表,之後對該單鏈表的資料進行逆置,並輸出逆置後的單鏈表資料。input 輸入多個整數,以 1作為結束標誌。output 輸出逆置後的單鏈表資料。sample input 12 56 4 6 55 15 33 62 ...