【leetcode100-023】【链表】反转链表

【题干】

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

【思路】

太经典了,感觉也没什么必要用文字来描述了,今天实在太累了,直接代码吧。

【题解】

cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        // 申请节点,pre和 cur,pre指向null
        ListNode* pre = nullptr;
        ListNode* cur = head;
        while (cur != nullptr) {
            // 记录当前节点的下一个节点
            ListNode* tmp = cur->next;
            cur->next = pre;
            // pre和cur节点都前进一位
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
};
cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (head == nullptr || head->next == nullptr) {
            return head;
        }
        // 这里的cur就是最后一个节点
        ListNode* cur = reverseList(head->next);
		// 这里请配合动画演示理解
		// 如果链表是 1->2->3->4->5,那么此时的cur就是5
		// 而head是4,head的下一个是5,下下一个是空
		// 所以head.next.next 就是5->4
        head->next->next = head;
        // 防止链表循环,需要将head.next设置为空
        head->next = nullptr;
        // 每层递归函数都返回cur,也就是最后一个节点
        return cur;
    }
};
相关推荐
c238565 小时前
《算法武林谱:四大排序神功与二分寻宝术全解》
数据结构·算法·排序算法
Mem0rin5 小时前
二分查找:左右边界
数据结构·算法
lazily-c5 小时前
数据结构模板
数据结构
祖力5513 小时前
数据结构的基本概念与单向链表(链表数据类型构造、创建、头插、尾插、头删、尾删)
数据结构·链表
白狐_79816 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25817 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
船厂电气自动化ai大模型18 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光18 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
rannn_11121 小时前
【力扣hot100】链表专题下|138、148、23、146
java·算法·leetcode·链表·开发
不会就选b1 天前
算法日常・每日刷题--<优先级队列>2
数据结构·算法