美文网首页数据结构
数据结构题目31:从双向循环链表中删除链结点

数据结构题目31:从双向循环链表中删除链结点

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

    题目:从带有头结点的双向循环链表中删除第1个数据域内容为x的链结点

    解题思路:

    1. 先从链表中找到数据内容为x的结点,由q指向
    2. 将q->rlink送q->llink->rlink,将q->llink送q->rlink->llink.
    3. 释放q

    具体实现如下:
    这里有用到createTwowayList(5)建立一个双链表

    function deleteD(list, x){
        let q
    
        q = list.rlink
        while ( q!=list && q.data!=x ) {
            q = q.rlink
        }
        if (q==list) {
            console.log("链表中无满足条件的结点!")
            return -1
        }
    
        q.llink.rlink = q.rlink
        q.rlink.llink = q.llink
        q = null
        return list
    }
    
    var twowayList = createTwowayList(5)
    
    var r_list = deleteD(twowayList, 2)
    console.log("操作后为:", toString(r_list))
    

    相关文章

      网友评论

        本文标题:数据结构题目31:从双向循环链表中删除链结点

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