zoukankan      html  css  js  c++  java
  • javascript 数组转链表

    数组转链表-普通做法

    /**
     * @param {Array} arr  要转换的数组
     */
    function array2list(arr) {
        if (arr.length === 0) return null
    
        // 第一个节点
        let head = { value: arr[0], next: null },
            // 临时变量,在循环中存储上一个节点
            p = head,
            // 存储当前节点
            node = {}
        for (let i = 1; i < arr.length; i++) {
            // 构建当前节点
            node = {
                value: arr[i],
                next: null
            }
            
            // 将当前节点与之前节点连接
            p.next = node
    
            // p 是临时变量,之前和 head 共同指向同一个内存地址
            // 这里 p 被重新赋值了,和 node 共同指向同一个内存地址
            // 设置当前节点为之前节点
            p = node
        }
        return head
    }
    
    // 执行:
    let link = array2list([4,5,1,9])
    console.log(JSON.stringify(link, null, 4))
    
    // 输出:
    {
        "value": 4,
        "next": {
            "value": 5,
            "next": {
                "value": 1,
                "next": {
                    "value": 9,
                    "next": null
                }
            }
        }
    }
    

    数组转链表-递归

    
    /**
     * @param {Array} arr  要转换的数组
     * @param {Number} start 数组下标,默认为 0
     */
    function array2list(arr, start = 0) {
        // 若序号等于数组长度,说明处理完成,直接返回 null
        if(arr.length === start) {
            return null
        }
    
        // 使用当前数组元素 arr[start] 构建当前链表节点
        let head = { value: arr[start], next: null }
    
        // 递归调用函数,得到当前节点的下一个节点
        let next = array2list(arr, ++start)
    
        // 将得到的下一个节点与当前节点连接
        head.next = next
    
        // 最后返回当前节点
        return head
    }
    
    // 执行:
    let link = array2list([4,5,1,9])
    console.log(JSON.stringify(link, null, 4))
    
    // 输出:
    {
        "value": 4,
        "next": {
            "value": 5,
            "next": {
                "value": 1,
                "next": {
                    "value": 9,
                    "next": null
                }
            }
        }
    }
    
  • 相关阅读:
    Mac 如何让python默认运行python3.8
    python发送post请求(转)
    Qt 学习(4)
    自定义Qt组件-通讯模块(P3)
    自定义Qt组件-通讯模块(P2)
    自定义Qt组件-通讯模块(P1)
    用 JS 做一个数独游戏(二)
    用 JS 做一个数独游戏(一)
    公交车情况数问题
    传球问题
  • 原文地址:https://www.cnblogs.com/linjunfu/p/12857615.html
Copyright © 2011-2022 走看看