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

题目:复制一个线性链表

解题思路:已知一个线性链表,要产生一个与已知线性链表完全等价的另外一个线性链表。这里假设已知线性链表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 )
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。