请完成以下在链表上实现将两个线性表 (a1,a2,…,an)和(b1,b2,…,bm)合成一个线性表 (a1,a2,…,an,b1,b2,…,bm)的操作算法。Status Merge(LinkList ra, LinkList &rb)//ra,rb分别是存放线性表(a1,a2,…,an)和(b1,b2,…,bm)的循环链的尾指针{if (____)//若循环链表rb为空return ERROR;p=____;//用p记下rb的头结点____; //将rb尾结点的后继指针 指向ra的头结点ra->next=p->next; //将ra尾结点的后继指针指向rb的首结点____; //释放rb原来的头结点空间return OK;}//Merge
请完成以下双向循环链表的初始化操作算法。双向链表的存储结构描述如下:typedef struct DuLNode{ ElemType data; //数据域struct LNode *prior; //前驱指针域struct LNode *next; //后继指针域} DuLNode, *DuLinkList;Status InitList(LinkList &L)//创建一个带头结点的空双向链表L{L=(DuLinkList)malloc(sizeof(DuLNode)); //为头结点分配空间____; //将头结点的前驱指针域和后继指针域均指向头结点}