單鏈表反轉總結篇

2022-07-26 16:33:11 字數 3127 閱讀 5374

**

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

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

class listnode 

}

把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。

dummy->1->2->3->4->5的就地反轉過程:

pcur是需要反轉的節點。

prev連線下一次需要反轉的節點

反轉節點pcur

糾正頭結點dummy的指向

pcur指向下一次要反轉的節點

偽**

1     // 1.就地反轉法

2 public listnode reverselist1(listnode head)

15 return dummy.next;

16 }

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

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

pnex是臨時儲存的pcur的next。

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

把pcur插入到dummy中

糾正頭結點dummy的指向

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

偽**

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

2 public listnode reverselist2(listnode head)

11 return dummy.next;

12 }

標籤: listnode, 面試

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

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

class listnode 

}

把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。

dummy->1->2->3->4->5的就地反轉過程:

pcur是需要反轉的節點。

prev連線下一次需要反轉的節點

反轉節點pcur

糾正頭結點dummy的指向

pcur指向下一次要反轉的節點

偽**

1     // 1.就地反轉法

2 public listnode reverselist1(listnode head)

15 return dummy.next;

16 }

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

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

pnex是臨時儲存的pcur的next。

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

把pcur插入到dummy中

糾正頭結點dummy的指向

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

偽**

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

2 public listnode reverselist2(listnode head)

11 return dummy.next;

12 }

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

單鏈表的反轉是常見的面試題目。本文總結了2種方法。1 定義 單鏈表node的資料結構定義如下 class listnode 15 return dummy.next 16 2.4 總結 1個頭結點,2個指標,4行 注意初始狀態和結束狀態,體會中間的 過程。3 方法2 新建鍊錶,頭節點插入法 3.1 ...

單鏈表反轉

單鏈表反轉,可以用迴圈做,當然也可以遞迴 詳見 include includestruct node 3 1 4 6 2 1 1 3 4 6 2 2 4 1 3 6 2 3 6 4 1 3 2 4 2 6 4 1 3 5 迴圈反轉,即依次改動3個指標值,直到鍊錶反轉完成 比如,上面第 1 行到第 2...

反轉單鏈表

include stdafx.h include include using namespace std struct listnode typedef listnode plistnode typedef plistnode list list creatlist return head void...