首页 c语言实现的链表集合的并集与交集

c语言实现的链表集合的并集与交集

举报
开通vip

c语言实现的链表集合的并集与交集c语言实现的链表集合的并集与交集 #include #include typedef int Datatype;//定表的点义义义义义义 typedef struct LNode{ Datatype data; LNode *next; }LNode,*LinkList; bool InitLink(LinkList &L) //初始化表义义 { L =(LinkList)malloc(sizeof(LNode)); if(L==NULL){ return false; } L->next=NULL; retur...

c语言实现的链表集合的并集与交集
c语言实现的链表集合的并集与交集 #include #include typedef int Datatype;//定表的点义义义义义义 typedef struct LNode{ Datatype data; LNode *next; }LNode,*LinkList; bool InitLink(LinkList &L) //初始化表义义 { L =(LinkList)malloc(sizeof(LNode)); if(L==NULL){ return false; } L->next=NULL; return true; } bool InsertData(LinkList &L,Datatype data) //向表中插入数据义义义义义义义{ LinkList pa=L; while(pa->next!=NULL){ pa=pa->next; } LinkList p=(LinkList)malloc(sizeof(LNode));//新建数据点义义 if(p==NULL){ printf("插入数据失\n");义 return false; } p->data=data; p->next=NULL; if(pa==NULL){ pa=p; }else{ pa->next=p; } return true; } void createLink(LinkList &L){ printf("义义入要插入的数据,以0义束!\n"); Datatype data; scanf("%d",&data); while(data!=00){ InsertData(L,data); scanf("%d",&data); } } void printLink(LinkList L)//打印表义义 { LinkList p=L->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } printf("\n"); } bool merger(LinkList La,LinkList Lb,LinkList &Lc)//两个表求并集义义义义义,并将果存放在义义义义义Lc中{ LinkList pa,pb; pb=Lb->next; //用于循义 pa=La->next; while(pa!=NULL){ //以La义义义义义基,若B中的数据在A义义义义义中不存在,插入到Lc 中 InsertData(Lc,pa->data); pa=pa->next;//pos表示la义义义义义义义义义中最后一个数据点,用于插入数据 } bool flag=false; while(pb!=NULL){ pa=La->next; flag=false; //用于判断B中的数据是否在A中存在 while(pa!=NULL){ if(pa->data==pb->data){ flag=false; break; //如果存在,本次循束义义义义义义义 } else{ flag=true; } pa=pa->next; //pa向后移义 } if(flag){ /*LinkList p=(LinkList)malloc(sizeof(LNode)); //注的代是用于将义义义义义义义义A和B合并之后存放在A中 if(p==NULL){ printf("插入数据失\n");义 return false; } p->data=pb->data; p->next=NULL; pos->next=p; pos=p;*/ InsertData(Lc,pb->data); //将B中的数据插入到Lc中 } pb=pb->next; } return true; } bool Intersection(LinkList La,LinkList Lb,LinkList &Lc)//两个表求交集,果存放在义义义义义义义义义义义Lc中{ LinkList pa,pb; pb=Lb->next; while(pb!=NULL){ pa=La->next; while(pa!=NULL){ if(pa->data==pb->data){ //求交集,只需找到两个义义义义义义义义义中共同的数据,插入到Lc中即可 InsertData(Lc,pa->data); } pa=pa->next; } pb=pb->next;} return true; } int main() { LinkList La,Lb,Lc;if(!InitLink(La)){ printf("初始化表失义义义义"); exit(1); } if(!InitLink(Lb)){ printf("初始化表失义义义义"); exit(1); } if(!InitLink(Lc)){ printf("初始化表失义义义义"); exit(1); } printf("义义义建第一条表\n");createLink(La);printf("义义义建第二条表\n");createLink(Lb);printf("义义表中的数据\n"); printf("La: ");printLink(La); printf("Lb: ");printLink(Lb); printf("义表求并集\n"); merger(La,Lb,Lc);printf("合并之后表中的数据义义义义义义义\n");printLink(Lc); printf("义表求交集\n"); if(!InitLink(Lc)){ printf("初始化表失义义义义"); exit(1); } Intersection(La,Lb,Lc); printf("求交之后表中的数据义义义义义义义\n");printLink(Lc); return(0); }
本文档为【c语言实现的链表集合的并集与交集】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_482581
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:6
分类:生活休闲
上传时间:2017-09-01
浏览量:59