反转链表 (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;
 }
相关推荐
纽扣6674 分钟前
【算法进阶之路】链表核心:快慢指针与反转链表专题精讲
数据结构·c++·算法·链表
格林威10 分钟前
工业视觉检测:两大主流异常检测开源框架深度对比(PatchCore vs SPADE)
开发语言·人工智能·深度学习·数码相机·计算机视觉·视觉检测·工业相机
eDEs OLDE12 分钟前
CC++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
2zcode15 分钟前
基于Matlab元胞自动机模拟(CA)静态再结晶过程
开发语言·matlab·静态再结晶
浅念-16 分钟前
吃透栈:LeetCode 栈算法题全解析
数据结构·c++·算法·leetcode·职场和发展·
吟安安安安16 分钟前
【算法设计与分析】第一讲 算法基础(上)
算法
阿Y加油吧16 分钟前
二刷 LeetCode:62. 不同路径 & 64. 最小路径和 复盘笔记
笔记·算法·leetcode
研究点啥好呢19 分钟前
滴滴Go后端开发工程师面试题精选:10道高频考题+答案解析
java·开发语言·golang
Levin__NLP_CV_AIGC20 分钟前
py文件中文件复制方法
开发语言·python
生成论实验室22 分钟前
《源·觉·知·行·事·物:生成论视域下的统一认知语法》导论:在破碎的世界寻找统一语法
人工智能·科技·算法·架构·创业创新