题目:有两个循环单链表,链表头指针分别为h1和h2,编写一个函数将链表h2链接到链表 h1之后,要求链接后的链表仍保持循环链表的形式。
分析:题目意思就是将两个循环单链表合并成1个
算法思想:找到h1的表尾p,h2的表尾q。将p指向h2,q指向h1。这样就变成了一条循环单链表,即合并完成。
代码:
void merge(Linklist &h1, Linklist &h2){
LNode *p,*q;
p=h1;
q=h2;
while(p->next!=h1){
//p-next=h1为表尾
p=p->next; // 找到h1的表尾p
}
while(q->next!=h2){
q=q->next; // 找到h2的表尾q
}
//进行合并
p->next=h2;
q->next=h1;
}