【力扣链表篇】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;
    }
};
相关推荐
2501_9416233218 小时前
智慧农业监控平台中的多语言语法引擎与实时决策实践
leetcode
轻抚酸~19 小时前
KNN(K近邻算法)-python实现
python·算法·近邻算法
Yue丶越1 天前
【C语言】字符函数和字符串函数
c语言·开发语言·算法
小白程序员成长日记1 天前
2025.11.24 力扣每日一题
算法·leetcode·职场和发展
有一个好名字1 天前
LeetCode跳跃游戏:思路与题解全解析
算法·leetcode·游戏
AndrewHZ1 天前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
蓝牙先生1 天前
简易TCP C/S通信
c语言·tcp/ip·算法
2501_941870561 天前
Python在高并发微服务数据同步与分布式事务处理中的实践与优化
leetcode
2501_941147711 天前
高并发微服务架构Spring Cloud与Dubbo在互联网优化实践经验分享
leetcode
稚辉君.MCA_P8_Java1 天前
Gemini永久会员 Java中的四边形不等式优化
java·后端·算法