题目:在带有头结点的双向循环列表中第1个数据域内容为x的结点右边插入一个数据信息为item的新结点
解题思路:
- 找到数据内容为x的结点,由指针变量q指向该结点
- 申请一个新的结点,由p指向该结点
- 设置p,p->data=item;把q->rlink送p->llink,把q->rlink->llink送p->rlink;把p送q->rlink-llink,把p送q->rlink。
具体算法实现如下:
这里有用到createTwowayList(5)建立一个双链表
function insertd(list, x, item) {
let p, q
q = list.rlink
while(q!=list&&q.data!=x){
q = q.rlink
}
if (q==list) {
console.log("链表中无满足条件的结点!")
return -1
}
p = new Node(item, null, null)
p.llink = q
p.rlink = q.rlink
q.rlink.llink = p
q.rlink = p
return list
}
var twowayList = createTwowayList(5)
var r_list = insertd(twowayList, 2, 'aa')
console.log("操作后为:", toString(r_list))