0
点赞
收藏
分享

微信扫一扫

【LeetCode每日一题】206. 反转链表 —— 递归(C/C++)

书坊尚 2022-04-13 阅读 63

写在前面:

大家好!我是一看就会(只是背了下来)一写就废的菜鸡,欢迎大家来与我一起进行刷题学习!!!下面先上鸡汤(本菜鸡),刷题前怎么能没有鸡汤与美女呢,嘎嘎嘎 ^ - ^

题目:

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

在这里插入图片描述

示例 2:

在这里插入图片描述

示例 3:

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

进阶:

链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

思路:

反转链表,只要屁股连头,头连屁股就好啦 ^ - ^qaq;

在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用!

代码:

ListNode* reverseList(ListNode* head) {
    ListNode* q = nullptr;
    ListNode* p = head;
    
    while(p){
        ListNode* t = p->next;
        p->next = q;
        q = p;
        p = t;
    }
    return q;
}


来源:力扣(LeetCode) 链接:[https://leetcode-cn.com/problems/reverse-linked-list](https://leetcode-cn.com/problems/reverse-linked-list)
举报

相关推荐

0 条评论