題意:
給定一個鏈表,要求得到其反轉鏈表
思路:
我們不難想到,我們可以通過改變每個結點的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;
}
};