【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;
    }
};
相关推荐
Wei&Yan14 分钟前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code
long3161 小时前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
张张努力变强3 小时前
C++ STL string 类:常用接口 + auto + 范围 for全攻略,字符串操作效率拉满
开发语言·数据结构·c++·算法·stl
wWYy.3 小时前
数组快排 链表归并
数据结构·链表
李斯啦果4 小时前
【PTA】L1-019 谁先倒
数据结构·算法
Mr Xu_19 小时前
告别硬编码:前端项目中配置驱动的实战优化指南
前端·javascript·数据结构
czxyvX19 小时前
017-AVL树(C++实现)
开发语言·数据结构·c++
数智工坊20 小时前
【数据结构-队列】3.2 队列的顺序-链式实现-双端队列
数据结构
elseif12320 小时前
【C++】并查集&家谱树
开发语言·数据结构·c++·算法·图论
徐小夕@趣谈前端20 小时前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6