1. 程式人生 > >鏈表倒置,這個還是考驗仔細程度,第一遍還沒做對 —— 劍指Offer

鏈表倒置,這個還是考驗仔細程度,第一遍還沒做對 —— 劍指Offer

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