数据结构

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

2020-05-01  本文已影响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))
上一篇下一篇

猜你喜欢

热点阅读