学习记录:js算法(二十四):反转链表

文章目录

反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

图一图一
图二图二

示例 1:(图一)
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:(图二)
输入:head = [1,2]
输出:[2,1]

示例 3:
输入:head = []
输出:[]

思路一

var reverseList = function (head) {
    let prev = null; // 初始化前一个节点为 null
    let current = head; // 当前节点从头节点开始
    while (current) {
        const nextTemp = current.next; // 暂存当前节点的下一个节点
        current.next = prev; // 反转当前节点的指针
        prev = current; // 移动前一个节点到当前节点
        current = nextTemp; // 移动到下一个节点
    }
    return prev; // 返回反转后的链表头节点
};

讲解

  1. 使用 prev 指针来存储前一个节点,初始化为 null
  2. 使用 current 指针来遍历链表,从头节点开始。
  3. 在循环中,首先暂存当前节点的下一个节点 nextTemp
  4. 将当前节点的 next 指针指向 prev,完成反转。
  5. 更新 prevcurrent 指针,继续遍历。
  6. 当遍历结束时,返回 prev,它指向新的头节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值