【力扣链表篇】206.反转链表

题目:

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

示例 1:

复制代码
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

复制代码
输入:head = [1,2]
输出:[2,1]

示例 3:

复制代码
输入:head = []
输出:[]

提示:

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

解答:

  • 需要三个指针,pre,cur,temp。目的是pre指向NULL,cur指向头节点,temp临时存储cur的next。
  • 每当cur指向pre完成两个节点之间的反转后,就需要pre指向cur的位置,cur指向temp的位置,temp在存储新的cur的next。
  • 三个指针始终连续,直到cur为NULL时,代表没有要反转的节点了。
cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* temp;//临时存储cur的next的
        ListNode* pre = NULL;
        ListNode* cur = head;
        while(cur){//当cur指向空的时,已经反转完毕,不再进入循环
            temp = cur->next;//当cur的next指向前一个节点完成反转时,cur的next找不到原来的下一个节点了,所以临时存储一下
            //例如:1-》2-》3-》变成了 1《-2-》3 时1的next不在是2,而是NULL,所以temp临时存储一下,为了后续cur能移动下一个节点,继续反转
            cur->next = pre;//反转
            pre = cur;
            cur = temp;
        }
        return pre;
    }
};
相关推荐
吃好睡好便好8 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅9 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
x_yeyue11 小时前
三角形数
笔记·算法·数论·组合数学
念何架构之路12 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星12 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑12 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光13 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩13 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_6294947313 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
ʚ希希ɞ ྀ15 小时前
单词拆分----dp
算法