劍指 Offer 24 反轉鍊錶c

2021-10-10 23:11:52 字數 1383 閱讀 2596

定義乙個pre指標指向上乙個結點cur指標指向當前節點,利用臨時指標tmp=cur->next不斷更新cur

錯誤案例

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

head -> next =

null

; cur -> next = pre;

return cur;}}

;

覺得題目簡單草草應付的**

沒有考慮到tmp可能是空指標,導致空指標報錯,同時導致反轉結束時得單獨處理。

改進:將pre的初始值定義為空指標,cur定義為head,當cur為空時說明pre到達頭節點,改進**為

;

head -> next -> next = head 可以讓當前節點的下乙個節點的next指標指向自己

利用遞迴的棧的特性省去乙個pre指標。

妙在往回遞迴之後,tmp一直都是最後一次的head。

時間複雜度o(n) ,空間複雜度o(n)

劍指offer 24 反轉鍊錶 C

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。struct listnode class solution return newhead 也可以寫成如下形式 class solution newhead cur last cur next cur next pre pre cur cur l...

劍指Offer 24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。例 輸入 1 2 3 4 5 none 輸出 5 4 3 2 1 none 雙指標遍歷鍊錶,將當前節點的next設為前乙個節點。注意儲存當前節點的next來遍歷。時間複雜度 o n 空間複雜度 o 1 def reverse l...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null思路 初始化乙個新的頭節點new head,然後用尾插法把原始鍊錶中的結點插入新的頭節點。最後return new head next.acwing 3...