美文网首页数据结构
数据结构题目27:建立一个循环链表

数据结构题目27:建立一个循环链表

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

    具体算法如下:

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

    说明,带有头结点。

    创建一个不带头结点的循环链表。

    function createCircleList1(n) {
        let p, r, list = null
        let i
        //建立一个无头结点的循环链表
        for (i = 1; i <= n; i++) {
            p = new Node(i, null)
            if ( list==null ) {
                list = p
            } else {
                r.link = p
            }
            r = p
        }
        p.link = list
        //至此一个循环链表创建完了
        return list
    }
    

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

    相关文章

      网友评论

        本文标题:数据结构题目27:建立一个循环链表

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