劍指offer 反轉鍊錶(遞迴與非遞迴)

2022-07-18 00:27:11 字數 938 閱讀 1561

題目:反轉鍊錶

題目描述:輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。

思路:方法一:非遞迴法

這屬於基礎題,**越簡潔越好,力求寫完一次過。這種題感覺只要在腦海裡有個翻轉的過程就很容易寫出來了,並且保證沒有錯誤

如:1->2->3->4->null

先讓1->null

再2->1->null

再3->2->1->null

就這樣下去就行

**:

1/*2

public class listnode 9}

*/10

public

class

solution

22return

pre;23}

24 }

方法二:遞迴法

思路:遞迴法 的思路就死一開始便跑到鍊錶的最後乙個節點處,然後從後往前的進行處理

如1->2->3->4->5->null

一系列遞迴呼叫後到達鍊錶末尾

head newhead

1 ->2 ->3 ->4 ->5 ->null

然後
head.next.next =head;//即5現在指向了4

head.next = null;//4現在指向null

head     newhead

1 ->2 ->3 ->4->null 5 ->4

即5->4->null

然後便返回上一層遞迴,在那一層裡

head=3,newhead=4

繼續重複上面的方法

**如下:

1

public

class

solution

10 }

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。方法1 將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。方法2 使用三個指標遍歷單鏈表,逐個鏈結點進行反轉。方法3 從第2個節點到第n個節點,依次逐節點插入到第1個節點 head節點 之後,最後將第乙個節點挪到新錶的表尾。public class l...

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.非遞迴 struct listnode class solution listnode ppre null listnode p phead listnode pnext null while p null else p pnext return p...

《劍指offer》 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。之前錯誤的寫法,一直不明白 原因是移位的時候,pcurr移到下一位時,裡面的值已經變成反向指標了,所以不能成功移動,就迴圈巢狀進去了,所以還需要乙個變數pnext來儲存移位前的值。struct listnode class solution phead ...