首页 > 其他分享 >LeetCode Hot100刷题记录-206. 反转链表

LeetCode Hot100刷题记录-206. 反转链表

时间:2024-09-06 10:03:50浏览次数:10  
标签:current 206 反转 next 链表 Hot100 prev 节点

206. 反转链表

题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

这道题要用到两个指针,一个current指向当前节点,另一个prev指向当前节点的上一个节点。
首先让current指向头节点head,prev指向head的前一个也就是null,这里要用next变量来暂时存储current的下一个节点,即next = current.next。为什么呢?因为避免断链,一旦我们对current和prev指针反转之后,才可以找到原来current的next节点,不然next节点就丢失啦。

整体的思路是这样的:

  1. 保存next
  2. 反转指针
  3. 移动prev指针指向当前节点
  4. 移动current指针指向当前节点的下一个节点
    继续处理下一个节点

保存next-反向current-后移prev-后移current

var reverseList = function(head) {
    let prev = null; // 前一个节点,初始时为null
    let current = head; // 当前节点,从head开始

    while (current !== null) {
        let next = current.next; // 先保存下一个节点,避免链表断开
        current.next = prev; // 当前节点的next指向前一个节点,实现反转
        prev = current; // prev前移,指向当前节点
        current = next; // current前移,处理下一个节点
    }

    return prev; // 返回新的头节点,已经反转
};

标签:current,206,反转,next,链表,Hot100,prev,节点
From: https://www.cnblogs.com/gardenOfCicy/p/18399700

相关文章

  • 链表算法题(下)
    在链表算法题(上)长中我们已经学习了一系列的链表算法题,那么在本篇中我们将继续来学习链表的算法题,接下来就继续来破解链表的算法题吧!1.相交链表160.相交链表-力扣(LeetCode)通过以上的题目的描述该算法题要我们实现的代码功能是判断两条链表是否相交,如果相较的话就返......
  • 内核链表基本知识
    一、基本知识内核链表:可以给里面的每一个数据都可以存储不同的数据的类型,结构体成员里面(将结点放在数据中)1、实质内核链表:有头的、双向循环链表2、注意结构体第一个成员即为结构体的首地址该链表里面的数据主要由两部分构成前驱结点,后继结点,该节点作为数据放在数据中3、......
  • 力扣86.分割链表
    classSolution{publicListNodepartition(ListNodehead,intx){//初始化两个链表的头节点和尾节点,分别用于存储小于x和大于等于x的节点ListNodeleftHead=null,leftTail=null;ListNoderightHead=null,rightTail=null;//临时变量,用于遍历原链......
  • Java-数据结构-链表-习题(三)(๑´ㅂ`๑)
    文本目录:​❄️一、习题一:  ▶ 思路: ▶ 代码:​❄️二、习题二: ▶ 思路: ▶ 代码:​❄️三、习题三: ▶ 思路: ▶ 代码:​❄️四、习题四:    ▶ 思路:   ▶ 代码:​❄️五、习题五: ▶ 思路:    ▶ 代码:  ​❄️六、习题六:   ......
  • Java顺序表和链表万字详解
    1.线性表的概念线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,......
  • 面向对象程序设计之链表 list 的简析(C++)
    简介:链表是一个双向的结构,与string与vector不同的是他不支持[]访问,因为链表是由一个节点一个节点连接而成的,并不连续。我们可以在常数量级内对于链表进行插入与删除数据1.构造函数我们在cplusplus.com中可以查到链表总共有四种构造的方式:1.无参构造(默认构造);2.使用n个va......
  • 深入了解链表 list 之的模拟实现 list (C++)
    1.基本框架关于链表我们知道其是一个双向循环结构,并且由许多节点组成,各个节点之间内存空间不一定连续,每个节点均有前驱指针与后继指针,下面我们使用类模版来实现一个适用于存储大部分数据类型的链表,由下面代码我们可以看到一些基础框架与很简单的函数size返回长度与empty判断......
  • 数据结构——单链表查询、逆序、排序
    1、思维导图2、查、改、删算法//快慢排序法找中间值intmid_link(Link_t*plink){Link_Node_t*pfast=plink->phead;Link_Node_t*pslow=pfast;intm=0;while(pfast!=NULL){pfast=pfast->pnext;++m;if(m%......
  • 单向链表与双向链表
    内存泄漏:手动申请的空间没有得到及时释放,导致内存发生内存泄漏(循环)    可以使用valgrind命令判断有无发生内存泄漏快慢指针法找中间节点:链表倒置: 链表插入排序: 单向链表与双向链表区别:一、单向链表:    1.单向链表的每个节点包含两部分信息:一部分是......
  • 23合并 K 个升序链表
    我嘞个二维数组有点小夸张了哈这个题目我最开始看就回想两个有序链表的排序,但是如果这样排,那要排k次,每次排序还有相应时间复杂度,工程量之大,相当恐怖那么这个时候我们就想起来去用堆最小堆,非子叶节点小于子叶节点,可以导致根节点是最小的,那么我们只需要把所有数据全部插......