美文网首页
数据结构题目29:建立一个带头结点的双向链表

数据结构题目29:建立一个带头结点的双向链表

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

具体算法实现如下:

//定义链结点
class Node{
    constructor (data, llink, rlink) {
        this.llink = llink,
        this.data = data,
        this.rlink = rlink
    }
}
//建立一个带头结点双向链表
function createTwowayList(n) {
    let p, r, list 
    list = new Node(null, null, null)
    list.rlink = list
    list.llink = list.rlink
    let a , i
    for ( i=1; i<=n; i++) {
        // a = Math.floor(Math.random()*10) //获取一个数据元素
        a = i
        p = new Node(a, null, null) //申请一个新的链结点,data赋值,指针域置空
        if (list.llink==list && list.rlink==list) {
            list.rlink = p
            p.llink = list
            
        } else {
            r.rlink = p
            p.llink = r
        }
        r = p
    }
    r.rlink = list
    list.llink = r
    return list
}
var twowayList = createTwowayList(5)

//打印链表以某种格式
function toString(list){
    if (list==null) {
        return null
    }
    if (list.rlink==list) {
        return "这是个空循环链表"
    }
    let p = list.rlink
    let str = list.data
    while( p!=list ){
        str = str + '->' + p.data
        p = p.rlink
    }
    str = str + '->' + p.data
    return str
}
toString(twowayList)

相关文章

网友评论

      本文标题:数据结构题目29:建立一个带头结点的双向链表

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