【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;
    }
};
相关推荐
fish_zzzz5 小时前
笔记-论数据结构1
数据结构
傅科摆 _ py8 小时前
链表力扣复习
数据结构·leetcode·链表
inrichtt9 小时前
第十一课时:串口中断接收与回调函数实战解析
c语言·数据结构·stm32·单片机·嵌入式硬件
信奥卷王10 小时前
[GESP202406 六级] 二叉树(含视频)
数据结构·算法
starzy199012 小时前
KafkaProducer 源码深度剖析:支撑高吞吐的数据结构设计
大数据·数据结构·kafka
y1su12 小时前
Leetcode 链表,树,回溯 模板
java·leetcode·链表
罗湖老棍子1 天前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
郝亚军1 天前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
Nil2081 天前
LeetCode 283移动零
数据结构·算法·leetcode
库玛西1 天前
外部排序全解析:败者树、置换-选择排序与最佳归并树
c语言·数据结构·c++·笔记·考研·算法