反转链表 (oj题)

一、题目链接

https://leetcode.cn/problems/reverse-linked-list/submissions/538124207

二、题目思路

1.定义三个指针,p1先指向NULL p2指向头结点 p3指向第二个结点

2.p2的next指向p1。然后移动指针,p1来到p2的位置,p2来到p3的位置,p3去到它的下一个结点

循环执行,直至p2到达空结点的位置 。这时,反转结束,新头结点就是p1现在的位置

三、题解代码

cpp 复制代码
struct ListNode* reverseList(struct ListNode* head) 
{
    if(head==NULL)//如果是空链表直接返回NULL
    return NULL;

  struct ListNode*p1=NULL;//p1先指向NULL
 struct ListNode* p2 = head;//p2指向头结点

 struct ListNode* p3 = p2->next;//p3指向第二个结点

//p2的next指向p1。然后移动指针,p1来到p2的位置,p2来到p3的位置,p3去到它的下一个结点
//循环执行,直至p2到达空结点的位置。这时,反转结束,新头结点就是p1现在的位置
while (p2!= NULL)
{
    p2->next = p1;
    p1 = p2;
    p2 = p3;
    
    //如果p3不为NULL,才能让它移动到下一个位置
    if(p3!=NULL)
    p3 =p3->next;
}

//反转结束,新头结点就是p1现在的位置
head = p1;
return head;
 }
相关推荐
小猫咪怎么会有坏心思呢7 分钟前
华为OD机试-云短信平台优惠活动-完全背包(JAVA 2024E卷)
java·开发语言·华为od
鱼鱼说测试24 分钟前
jmeter工具简单认识
开发语言·python
Hello.Reader42 分钟前
Lua 事务双写、RedisGears 异步双写、零停机索引迁移与容量预估
开发语言·lua
↣life♚1 小时前
SAM2论文解读-既实现了视频的分割一切,又比图像的分割一切SAM更快更好
人工智能·深度学习·算法·计算机视觉·视频分割·通用分割
虾球xz1 小时前
CppCon 2017 学习:Howling at the Moon: Lua for C++ Programmers
开发语言·c++·学习·lua
鼓掌MVP1 小时前
“荔枝使”的难题怎么破:A*运输路径算法编程实践
算法
GIS小天1 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月21日第115弹
人工智能·算法·机器学习·彩票
monicaaaaan1 小时前
旋转图像C++
开发语言·c++
无影无踪的青蛙1 小时前
[C++] STL数据结构小结
开发语言·数据结构·c++
景彡先生1 小时前
C++中的指针与引用
开发语言·c++