问答题
一线性表存储在带头结点的双向循环链表中,L为头指针。对如下算法: (1)说明该算法的功能。(2)在空缺处填写相应的语句。 void unknown (BNODETP*L) (p=L一>next;q=p一>next;r=q->next; while(q!=L) {while (p!=L) && (p一>data>q一>data)p=p->prior; q一>prior一>next=r;(1) ; q一>next=p一>next;q一>prior=p; (2);(3);q=r;p=q一>prior; (4); } }【北京理工大学1999第二部分数据结构[7](8分)】
【正确答案】正确答案:(1)本算法功能是将双向循环链表结点的数据域按值自小到大排序,成为非递减(可能包括数据域值相等的结点)有序双向循环链表。 (2)(1)r->prior=q->prior; //将q结点摘下,以便插入适当位置 (2)p->next->prior=q; //(2)(3)将q结点插入 (3)p->next=q; (4)r=r->next;或r=q->next; //后移指针,再将后面结点插入适当位置
【答案解析】