2.3 **
2.4 總結
3 方式二:新建鍊錶,頭節點插入法
3.3 **
3.4 總結
單鏈表node的資料結構定義如下:
class
listnode
}
2.1 思路
把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。
dummy->1->2->3->4->5的就地反轉過程:
dummy->2->1->3->4->5
dummy->3->2->1->4->5
dummy->4>-3->2->1->5
dummy->5->4->3->2->1
2.2 解釋
1初始狀態
2 過程
pcur是需要反轉的節點。
1 prev連線下一次需要反轉的節點
2 反轉節點pcur
3 糾正頭結點dummy的指向
4 pcur指向下一次要反轉的節點
//釋放節點,注意!!!
dummy =
null
;return pcur;}}
;2.4 總結
1個頭結點,2個指標,4行**
注意初始狀態和結束狀態,體會中間的**過程。
3.1 思路
新建乙個頭結點,遍歷原鍊錶,把每個節點用頭結點插入到新建鍊錶中。最後,新建的鍊錶就是反轉後的鍊錶。
3.2 解釋
1 初始狀態
2 過程
pcur是要插入到新鍊錶的節點。
pnex是臨時儲存的pcur的next。
1 pnex儲存下一次要插入的節點
2 把pcur插入到dummy中
3 糾正頭結點dummy的指向
4 pcur指向下一次要插入的節點
注意:上圖有一點問題,網上摘取的
3.3 **
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
pcur = dummy -
> next;
delete dummy;
dummy =
null
;return pcur;}}
;
3.4 總結
1個頭結點,2個指標(包含乙個臨時儲存節點的pnex),4行**
注意初始狀態和結束狀態,體會中間的**過程。
單鏈表反轉 逆序的兩種方法
摘自 延伸閱讀 此文章所在專題列表如下 第01話 線性表的概念與定義 第02話 線性表的抽象資料型別adt定義 第03話 線性表的順序儲存結構 第04話 線性表的初始化 第05話 線性表的遍歷 插入操作 第06話 判斷線性表是否為空與置空操作 第07話 線性表的查詢操作 第08話 線性表刪除某個元素...
面試題 單鏈表反轉
問題 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。一 非遞迴演算法 假設有鍊錶a b c d e f g。在反轉鍊錶過程中的某一階段,其鍊錶指標指向為 a b c d e f g。也就是說在結點d之前的所有結點都已經反轉,而結點d後面的結點e開始的所有結點都沒有反轉。這樣...
鏈表面試題 反轉單鏈表
反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null解決方案 頭插法開闢新鍊錶並逐個讀取舊鍊錶,頭插進新鍊錶,這樣新的鍊錶與原鍊錶的結構就是反的,需要借助輔助空間 definition for singly linked list.struct listnod...