乐趣区

关于leetcode:翻转链表

1. 题目形容:

翻转一个链表

2. 样例输出

输出:
链表 = 1->2->3->null
输入:
3->2->1->null

3. 题目思路剖析:

在这里其实就是使用一个遍历的思维,意思就是先在最开始的时候,定义一个空的区域,定义为指针 prev,而后将链表的最前端视为curr,最前端元素的后继元素标为指针 *next。
在遍历的时候,将curr 指向的元素,也就是当初的元素的后继元素指向后面的元素,而后将curr 后移,将prev 指向当初的元素,next 指向前面元素的后继元素,而后再将 *curr 指向的元素的后继元素指向后面那一个,再持续递推上来。最初返回 prev,因为这时候 prev 刚刚好遍历齐全部的链表。

4. 代码示例:

class Solution {
public:
    ListNode* reverse(ListNode *head) {
        ListNode* prev = nullptr;
        ListNode* curr = head;
        while (curr) {
            ListNode* next = curr->next;
            curr->next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
};
退出移动版