ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反转链表

2022-08-14 09:01:54  阅读:173  来源: 互联网

标签:p2 p1 反转 链表 pHead null


题目描述

  1. 题目地址:http://mtw.so/6jyXMj
  2. 题目要求

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围:0≤n≤1000
要求:空间复杂度O(1) ,时间复杂度 O(n) 。

  1. 题目示例
    如当输入链表{1,2,3}时,
    经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
    以上转换过程如下图所示:

示例1

输入:{1,2,3}
输出:{3,2,1}

示例2

输入:{ }
返回值:{ }
说明:空链表则输出空

解题思路

  1. 我们要注意边界条件处理:
    链表为空时,代码是否能正常工作?
    如果链表只包含一个结点时,代码是否能正常工作?
  2. 需要创建两个指针p1和p2,p1用来记录当前链表pHead 后面的链表,p2 指针用来创建新的反转链表。

解题代码

function ReverseList(pHead){

if(pHead == null || pHead.next == null){     // 判断链表为空或长度为1的情况
return pHead;
}
let p1= null,
p2 = null;
while(pHead!=null){
p1= pHead.next          //   第一步:指针指向pHead 后面的链表;
pHead.next =p2          //   第二步:记录反转链表的位置
p2 = pHead               //第三步:反转链表的位置指向反转链表的新的头节点
pHead = p1               //第四步:将计算链表的pHead.next设置为表头,重新循环
}
return p2

}
module.exports = {
ReverseList : ReverseList
};

标签:p2,p1,反转,链表,pHead,null
来源: https://www.cnblogs.com/xiayuxue/p/16584787.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有