美文网首页数据结构
数据结构题目23:复制一个线性链表

数据结构题目23:复制一个线性链表

作者: 玲儿珑 | 来源:发表于2020-05-01 03:47 被阅读0次

题目:复制一个线性链表

解题思路:已知一个线性链表,要产生一个与已知线性链表完全等价的另外一个线性链表。这里假设已知线性链表lista指出,经复制以后产生的线性链表有listb指出。
下面将该操作设计为一个递归算法。其操作可以描述为以下:
1.若lista为空,则返回空指针。
2.若lista非空,则复制lista所指的链结点,并将该链结点的指针赋予listb;然后复制该链结点的直接后继结点,并将该直接后继结点的指针赋予listb->link,最后返回新复制的线性链结点的第1个链结点指针listb。

具体算法实现如下:
这里我们会用到toString(list))来打印一个线性链表出来。
这里我们会用到createLinklist(n)来建立一个线性链表出来

function copy(list) {
    let listb 
    if ( list == null) {
        return null
    } else {
        listb = new Node()
        listb.data = list.data
        listb.link = arguments.callee(list.link)
    }
    return listb
}

var lista = createLinklist(5)
console.log('创建的list为:', toString(lista))

var r_list = copy(lista)
console.log('复制后的链表为:', toString(r_list))
console.log( r_list==lista )

相关文章

  • 数据结构题目23:复制一个线性链表

    题目:复制一个线性链表 解题思路:已知一个线性链表,要产生一个与已知线性链表完全等价的另外一个线性链表。这里假设已...

  • 常见数据结构和算法

    常见数据结构 线性数据结构(按顺序具有数据元素的数据结构):数组,堆栈,链表(单链表 双链表),队列非线性数据结...

  • 面试题35. 复杂链表的复制

    复杂链表的复制 题目描述 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了...

  • 链表、递归、堆、Hashmap、归并排序算法

    java数据结构——链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的...

  • Java链表

    一、链表介绍 数组和链表都是最基础的线性数据结构,可以用来实现栈,队列等非线性,有特定应用场景的数据结构。数组作为...

  • 树的实现

    前面写那么多文章都是是线性数据结构的探索.无论数组,链表,栈,队列都是线性数据结构我们看到了线性数据结构的大多数时...

  • 看动画学算法之:二叉搜索树BST

    简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的非线性的数据结构。 树是由很多个节点组...

  • 数据结构题目18:销毁一个线性链表

    题目:销毁一个线性链表.解题思路:所谓销毁一个线性链表就是指将链表中所有链结点删除,并释放其占用的存储空间,使之成...

  • 数据结构和算法(三)双向链表与双向循环链表的实现

    数据结构和算法(一)线性表实现 数据结构和算法(二)单向循环链表的创建插入删除实现 数据结构和算法(三)双向链表与...

  • 数据结构和算法(五)栈的操作和实现

    数据结构和算法(一)线性表实现 数据结构和算法(二)单向循环链表的创建插入删除实现 数据结构和算法(三)双向链表与...

网友评论

    本文标题:数据结构题目23:复制一个线性链表

    本文链接:https://www.haomeiwen.com/subject/fwxfghtx.html