设ha=(a1,a2,.,an)和(hb=(b1,b2,.,bm)是两个带头结点的循环单链表编写将这两个表合并为带头结点的循环单链表hc的算法.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 03:50:58
设ha=(a1,a2,.,an)和(hb=(b1,b2,.,bm)是两个带头结点的循环单链表编写将这两个表合并为带头结点的循环单链表hc的算法.
设ha=(a1,a2,.,an)和(hb=(b1,b2,.,bm)是两个带头结点的循环单链表
编写将这两个表合并为带头结点的循环单链表hc的算法.
设ha=(a1,a2,.,an)和(hb=(b1,b2,.,bm)是两个带头结点的循环单链表编写将这两个表合并为带头结点的循环单链表hc的算法.
/////////////////////////////////////////////////////////////
// 循环单链表的合并
// 作者:悉雨辰寂
// 时间:2008年4月4日
// 说明: 循环单链表的合并/////////////////////////////////////////////////////////////
#include
//结点
struct listNode
{
int data;
node* next;
}node;
node *ha, *hb,*hc;
////////////////////////////////////////////////////////////
//创建链表
node* create(int t)
{
int i=1;
node *head,*p,*r;
head=new node;
p=head;
p->next=head;
while(idata=i;
r->next=head;
p->next=r;
p=r;
i++;
}
return head;
}
////////////////////////////////////////////////////////////
//合并链表
node* merge(node* ha,node* hb)
{
node *head,*p;
head = new node;
head->next=ha->next;
for(p=ha->next;p->next!=ha;p=p->next);
p->next=hb->next;
for(;p->next!=hb;p=p->next);
p->next=hc;
delete ha;
delete hb;
return head;
}
//////////////////////////////////////////////
//打印链表
void print(node *p)
{
p=p->next;
cout