題意:
給定一個鏈表,要求得到其反轉鏈表
思路:
我們不難想到,我們可以通過改變每個結點的next指針指向其前一個結點,但是這樣卻導致後面的節點不好尋找,所以我們可以開三個指針,分別記錄當前結點,前一個結點和下一個結點
/** * 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) { ListNode *pre = nullptr; ListNode *newhead = nullptr; ListNode *node = head; while(node!=nullptr) { ListNode *next = node->next; if(next==nullptr) newhead = node; node->next = pre; pre=node; node = next; } return newhead; } };