鏈表倒置,這個還是考驗仔細程度,第一遍還沒做對 —— 劍指Offer
阿新 • • 發佈:2018-02-09
ng- first spa http bug rst practice val code
https://www.nowcoder.net/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=11168&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
題目描述
輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。
思路:
還是要用三個指針,但是要考慮退出條件。完全的沒有前後特殊情況的處理,看起來不行。為了保持優雅性,我把特殊處理放在了最前面。
但是最開始有一個bug,就是初始的時候有兩句前後順序顛倒了。倒置不能正常工作,後來可以了。
代碼:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { if (pHead == NULL || pHead->next == NULL) return pHead; ListNode *pFirst = NULL; ListNode*pSecond = pHead;
// 開始下面兩行倒了,有bug ListNode *pThird = pSecond->next; pSecond->next = pFirst; while (pThird != NULL) { pFirst = pSecond; pSecond = pThird; pThird = pThird->next; pSecond->next = pFirst; }return pSecond; } };
鏈表倒置,這個還是考驗仔細程度,第一遍還沒做對 —— 劍指Offer