单向循环链表的存储结构
单向循环链表(Circular Linked List)是单向链表的一种扩充,当单向链表带有头结点时,把单向链表中尾结点的指针域由空指针改为头结点的指针(当单向链表不带头结点时改为指向第一个结点的指针),这样整个链表形成一个回路,从链表中任一个结点出发均可以访问到表中其他结点。图2-13所示为单向循环链表。
两个单向循环链表链成一个单向循环链表
将两个单向循环链表合并成一个带尾指针的单向循环链表。如图2-14,设指针a、b分别是两个待合并的链表A、B的尾指针,只要在A链表尾结点的指针域中存入B链表的第一个结点的指针,这样B链表就接到了A链表的尾部。然后在B链表尾结点的指针域存入A链表的头指针,使合并后的链表成为单向循环链表,且尾指针为b。合并步骤如下:
p=a->next;q=b->next; /*分别得到A、B链表的头指针*/a->next=q->next; /*A链表尾结点的指针域存入B 链表第一个结点的指针*/b->next= p;/*B链表尾结点的指针域存入A链表的头指针*/free(a); free(p); free(q);