将两个循环单链表连接成一个循环链表
问题描述:
有两个循环单链表,链表头指针分别为h1和h2,编写一个函数将链表h2链接到链表h1之后,要求链接后的链表仍保持循环链表形式。
问题解答:
算法思想:先找到两个链表的尾指针,将第一个链表的尾指针与第二个链表的头结点链接起来,再使之成为循环的。
- LinkList Link(LinkList &h1,LinkList &h2){
-
- LNode *p, *q;
- p=h1;
- while (p->next!=h1)
- p=p->next;
- q=h2;
- while (q->next!=h2)
- q=q->next;
- p->next=h2;
- q->next=h1;
- return h1;
- }
LinkList Link(LinkList &h1,LinkList &h2){
//将循环链表h2链接到循环链表h1之后,使之仍保持循环链表的形式
LNode *p, *q; //分别指向两个链表的尾结点
p=h1;
while (p->next!=h1) //寻找 h1 的尾结点
p=p->next;
q=h2;
while (q->next!=h2) //寻找 h2 的尾结点
q=q->next;
p->next=h2; //将h2链接到h1之后
q->next=h1; //令h2的尾结点指向h1
return h1;
}