【算法】链表翻转(typescript)

简介: 链表翻转

正文



思路


以三个节点为切入点,临时变量保存最右边节点,中间节点的指针从指向最右边节点改成指向最左边节点(即翻转),保存最左边节点的变量赋值成中间节点,保存中间节点的变量赋值成最右边节点。


思路扩展


链表翻转也是翻转,联想到普通数值变量的翻转可能会好理解一点,与普通数值变量翻转不同的是不但涉及“值”还设计“指针”,但也没关系,就是多了一步改变指针的状态而已。

// @ts-ignore
class ListNode<T> { //链表【节点数据结构】
    val: T // 节点的【值】
    next: ListNode<T> | null = null // 指向下个节点的【指针】
    constructor(val: T) { // 构造函数
        this.val = val
    }
}
// 翻转节点
const reverseListNode = (head: ListNode<any> | null) => {
    let left = null // 三个相关节点执行操作时最左边的节点
    let mid = head // 三个相关节点执行操作时中间的节点
    while (mid !== null) {
        let right = mid.next //三个相关节点执行操作时最右边的节点,(联想交换a,b两个变量的值时常使用的 tmp 变量,保存状态用的)
        mid.next = left // 联想交换 a,b 两个变量的值,不过交换 a,b 的值相当于是一维的,只需要改变值,此处相当于是二维的,除了改变值之外,在交换之前需要做值之外的状态(这里的状态就是 next 指向)变更(翻转)
        left = mid // 联想交换 a,b 两个变量的值
        mid = right // 联想交换 a,b 两个变量的值
    }
}
let a = new ListNode(4)
let b = new ListNode(5)
let c = new ListNode(6)
b.next = c
a.next = b
console.log(a)
reverseListNode(a)
console.log("result:\n", c)


目录
相关文章
|
12月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
230 0
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
492 30
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
725 25
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
存储 缓存 算法
经典算法之链表篇(三)
经典算法之链表篇(三)
255 4
|
算法
经典算法之链表篇(二)
经典算法之链表篇(二)
270 4
|
算法 索引
经典算法之链表篇
经典算法之链表篇
298 4
|
算法
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
222 0
|
算法
❤️算法笔记❤️-(每日一刷-160、相交链表)
❤️算法笔记❤️-(每日一刷-160、相交链表)
183 1