定義乙個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...