数据结构题目7:建立一个线性链表

题目:建立一个线性链表
解题思路:建立一个线性链表的过程是一个动态生成链结点并依次将它们链接到链表中的过程。算法思想比较简单,只需从线性表的第1个数据元素开始依次获取表中的数据元素,每取得一个数据元素,就为该数据元素生成一个新的链结点,将取得的数据元素的数据信息送新结点的数据域的同时,见新结点的指针域置为NULL,然后将新的链结点插入到链表的末尾。当去第1个数据元素时,链表为空,此时直接将新的链结点的地址送list即可。
具体算法如下:

//定义链结点
class Node{
    constructor (data, link) {
        this.data = data,
        this.link = link
    }
}
//建立一个线性链表
function createLinklist(n) {
    let p, r, list = null
    let a , i
    for ( i=1; i<=n; i++) {
        a = Math.floor(Math.random()*10) //获取一个数据元素
        p = new Node(a, null) //申请一个新的链结点,data赋值,指针域置空
        if (list==null) {
            list = p
        } else {
            r.link = p
        }
        r = p
    }
    return list
}
let list = createLinklist(10)
//打印链表以某种格式
function toString(list){
    if ( list==null ) {
        return "这是个空表"
    }
    let p = list
    let str = list.data
    while(p.link!=null){
        p = p.link
        str = str + '->' + p.data
    }
    return str
}
toString(list)

性能:
算法的时间复杂度为O(n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容