一種簡單的單鏈表逆序 反轉的方法

2021-07-30 06:56:21 字數 502 閱讀 9396

假定乙個單鏈表,其排列是這樣的:p1--->p2--->p3--->.................

其中,p1就是頭結點。

反轉思路是:

(1)第一步反轉,p1和p2, 也就是使得p2->next=p1. 如圖: p1<----p2--->p3

(2)第二步,採用同樣的方式,反轉p3和p2,也就是使得;p1<---p2<---p3

既然是同第一步一樣的方式,就不能簡單地p3-->next=p2完事了,否者的話得窮舉所有結點,一相鄰兩個結點為單位,挨個手工反轉了。

於是想到利用指標的特性,重用第一步的反轉。這個時候只要使得p1指向p2,p2指向p3,再重用第一步反轉p1和p2,即p2->next=p1.。相當於從p1開始整體指標往右移動,這樣p2和p3之間的反轉由於指標重新賦值了,變成了可以直接重用p1和p2的反轉了。

演算法實現如下:(leetcode**,通過除錯)

class solution

return p1;}};



單鏈表反轉 逆序的兩種方法

摘自 延伸閱讀 此文章所在專題列表如下 第01話 線性表的概念與定義 第02話 線性表的抽象資料型別adt定義 第03話 線性表的順序儲存結構 第04話 線性表的初始化 第05話 線性表的遍歷 插入操作 第06話 判斷線性表是否為空與置空操作 第07話 線性表的查詢操作 第08話 線性表刪除某個元素...

反轉單鏈表的方法

方法1 將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。比較浪費空間 時間複雜度 o n 空間複雜度 o n actlist reverselist2 actlist head head p 最後q必然指向null,所以返回了p作為新的頭指標 return head 複製 方法3 從第2個節點到...

單鏈表逆序三種方法

需要三個指標,前驅p1,當前p2,後繼p3 結束的條件是p2 null void reverse1 pnode head p1 p2 p2 p3 head next p1 head變成新頭節點返回 else return pnode reverse1 pnode head p1 p2 p2 p3 r...