劍指offer 反轉鍊錶 C

2021-09-10 01:59:51 字數 503 閱讀 3737

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

通過三個指標來實現。反轉鍊錶,希望在時間複雜度和空間複雜度較優,那麼最好進過一次歷遍就實現。經過分析,需要儲存當前節點、上乙個節點和後面乙個節點。

初始化:開始處理第乙個節點的時候,他的下乙個節點應該指向空節點。所以將第乙個指標p1初始化指向乙個空節點。第二個指標p2指向當前節點。第三個指標p3指向後面乙個節點。

之後通過迴圈控制,只要最後乙個節點p3不為空,那麼就一直進行反轉。當前節點p2將鍊錶分為了兩段。將p2->next指向p1,不斷的處理,將元素新增在前一段。知道p3到達末尾,指向null,此時p2為最後乙個節點,因為還沒有處理,再次新增上就完成了鍊錶的反轉。

/*

struct listnode

};*/

class

solution

p2->next=p1;

return p2;}}

;

反轉鍊錶(C ) 劍指offer

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。vector int printlistfromtailtohead listnode head std reverse ret.begin ret.end return ret vector int printlistfromtailt...

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。方法1 將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。方法2 使用三個指標遍歷單鏈表,逐個鏈結點進行反轉。方法3 從第2個節點到第n個節點,依次逐節點插入到第1個節點 head節點 之後,最後將第乙個節點挪到新錶的表尾。public class l...

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.非遞迴 struct listnode class solution listnode ppre null listnode p phead listnode pnext null while p null else p pnext return p...