写点什么

leetcode 206 反转链表

作者:好吃不贵
  • 2021 年 12 月 23 日
  • 本文字数:479 字

    阅读完需:约 2 分钟

题意:

给一个单链表的头节点 head,要求反转链表,并返回反转后的链表。


分析:

首先注意到是单链表,所以只有一个 next 指针,没有 prev 指针。而且本题并没有要求不能改变原链表,所以可以将原链表的 next 指针指向下一个节点即可。

这道题的注意点有:

  1. 有三种节点,prev 表示前一个节点,curr 表示当前节点,next 表示下一个节点。移动的时候,每次把 prev 和 curr 往后移动即可,next 可以在下一次通过 curr->next 指针获得。

  2. 循环的时候,判断 curr 是否为空即可,不空就可以继续往后遍历。

  3. 翻转的时候,把 curr->next 指向前一个即可,当然最前面的 prev 要初始化为 nullptr。


解答如下:

class Solution {

public:

    ListNode* reverseList(ListNode* head) {

        ListNode* prev = nullptr;

        ListNode* curr = head;

        while (curr != nullptr) {

            ListNode* next = curr->next;

            curr->next = prev;

            prev = curr;

            curr = next;

        }

        return prev;

    }

};

用户头像

好吃不贵

关注

还未添加个人签名 2018.11.20 加入

还未添加个人简介

评论

发布
暂无评论
leetcode 206 反转链表