LeetCode——206. 反轉鏈表

題目來源:LeetCode 206. 反轉鏈表

題目描述:

反轉一個單鏈表。

示例:

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
進階:
你可以迭代或遞歸地反轉鏈表。你能否用兩種方法解決這道題?

思路:順序遍歷鏈表,將反轉後的鏈表的最後一個元素的next指向當前訪問的節點的後繼節點,並將每一次訪問到的節點作爲新的頭結點,直至反轉後的鏈表的最後一個元素的next指向NULL爲止。

實現代碼(C++):

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==NULL || head->next==NULL)
        {
            return head;
        }
        ListNode* cur_head = head;
        ListNode* temp = NULL;
        while(head->next != NULL)
        {
            temp = head->next;
            head->next = head->next->next;
            temp->next = cur_head;
            cur_head = temp;
        }
        return cur_head;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章