反轉連結串列

该说不唠發表於2024-03-05

題目:給你單連結串列的頭節點 head ,請你反轉連結串列,並返回反轉後的連結串列。

思路:第一步,首先定義一個空結點用來儲存臨時指標,然後定義一個前指標cur指向頭結點,定義一個後指標指向NULL,

也就是頭結點的前面一位。

第二步,迴圈檢測前指標cur的值,直到該指標指向連結串列尾部,即為空時,反轉結束。

第三步,開始移動雙指標,首先儲存頭結點的下一個結點位置,然後反轉前指標的指向,使其指向後指標。此時連結串列的頭結點指向的是頭結點的前一個結點,即NULL。

然後依次更新前、後指標的位置,向後移動一位,依次迴圈。

第四步,最後前指標cur指向NULL,後指標指向的是最後一個結點,而此時最後一個結點就變為了頭結點,返回後指標pre即可。單連結串列反轉完成。

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* temp;
        ListNode* cur=head;
        ListNode* pre=NULL;
        while(cur)
        {
            temp=cur->next;
            cur->next=pre;
            pre=cur;
            cur=temp;
        }

        return pre;
    }
};

相關文章