永发信息网

设ha=(a1,a2,。。。,an)和(hb=(b1,b2,。。。,bm)是两个带头结点的循环单链表

答案:1  悬赏:80  手机版
解决时间 2021-02-03 13:09
  • 提问者网友:斑駁影
  • 2021-02-03 05:08
设ha=(a1,a2,。。。,an)和(hb=(b1,b2,。。。,bm)是两个带头结点的循环单链表
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-02-03 06:12
/////////////////////////////////////////////////////////////
// 循环单链表的合并
// 作者:悉雨辰寂
// 时间: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(i<=t)
{
r=new node;
r->data=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<<"输出链表: ";
while(p!=hc)
{

cout<data<<" ";
p=p->next;
}
cout<}
///////////////////////////////////////////////////////////////
//主函数
void main()
{
int m=10;
int n=20;

ha=create(n); //创建链表ha
hb=create(m); //创建链表hb
hc= merge(ha, hb);//合并链表ha,hb得到hc
print(hc); //打印链表hc
}

悉雨辰寂
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯