**
單鏈表的反轉是常見的面試題目。本文總結了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.新建鍊錶,頭節點插入法標籤: listnode, 面試2 public listnode reverselist2(listnode head)
11 return dummy.next;
12 }
單鏈表的反轉是常見的面試題目。本文總結了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...