就地鍊錶反轉 單鏈表反轉總結篇

2021-10-13 04:30:30 字數 843 閱讀 6597

單鏈表的反轉是常見的面試題目。本文總結了2種方法。

1 定義

單鏈表node的資料結構定義如下:

class listnode

15 return dummy.next;

16 }

2.4 總結

1個頭結點,2個指標,4行**

注意初始狀態和結束狀態,體會中間的**過程。

3 方法2:新建鍊錶,頭節點插入法

3.1 思路

新建乙個頭結點,遍歷原鍊錶,把每個節點用頭結點插入到新建鍊錶中。最後,新建的鍊錶就是反轉後的鍊錶。

3.2 解釋

1 初始狀態

2 過程

pcur是要插入到新鍊錶的節點。

pnex是臨時儲存的pcur的next。

pnex儲存下一次要插入的節點

把pcur插入到dummy中

糾正頭結點dummy的指向

pcur指向下一次要插入的節點

偽**1 pnex = pcur.next

2 pcur.next = dummy.next

3 dummy.next = pcur

4 pcur = pnex

3 迴圈條件

pcur is not null

3.3 **

1 // 2.新建鍊錶,頭節點插入法

2 public listnode reverselist2(listnode head)

11 return dummy.next;

12 }

3.4 總結

1個頭結點,2個指標(包含乙個臨時儲存節點的pnex),4行**

注意初始狀態和結束狀態,體會中間的**過程。

單鏈表就地反轉

實現乙個函式 void reverse struct list node head 在盡量不借助輔助變數的情況下,實現任意長度單鏈表 不考慮記憶體限制 的反轉 or 逆序 struct list node struct list void reverse struct list node head ...

單鏈表就地反轉

實現乙個函式 void reverse struct list node head 在盡量不借助輔助變數的情況下,實現任意長度單鏈表 不考慮記憶體限制 的反轉 or 逆序 struct list node struct list void reverse struct list node head ...

單鏈表反轉總結篇

單鏈表的反轉是常見的面試題目。本文總結了2種方法。單鏈表node的資料結構定義如下 class listnode 把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。dummy 1 2 3 4 5的就地反轉過程 pcur是需要反轉的節點。prev連線下一次需要反轉的節點 反...