单链表的交并补1_第1页
单链表的交并补1_第2页
单链表的交并补1_第3页
单链表的交并补1_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——单链表的交并补1单链表的交并补

1.需求分析

任意给定两个包含10-2000个元素的集合A,B(集合中元素类型为任意整型数),求这两个集合的交集、并集和补集。

单链表合并,时间繁杂度O(m*n)),空间繁杂度O(n)2.概要设计

首先设计程序的设计结构用来表示集合

//线性表的单链表存储结构

typedefstructLNode{chardata;

structLNode*next;}LNode,*LinkList;

创立生成次集合的函数

voidCreateList_L(LinkList//线性表的单链表存储结构typedefstructLNode{chardata;structLNode*next;}LNode,*LinkList;

voidCreateList_L(LinkList

L->next=NULL;//先建立一个带头结点的单链表for(inti=n;i>0;i--){

LNode*p=newLNode;//生成新结点cin>>p->data;//输入元素值

p->next=L->next;//插入到表头L->next=p;}}

voidBing(LinkListLa,LinkListLb,LinkListLc->next=NULL;LNode*pa=La->next;

while(pa)//把集合La中的元素复制到集合Lc中{

LNode*q=newLNode;q->data=pa->data;q->next=Lc->next;Lc->next=q;

pa=pa->next;//指向La的指针pa后移}

LNode*pb=Lb->next;

while(pb)//假使集合b中元素不同于集合a中元素,就添加到集合c中{

boolflag=true;//flag用来标记a,b中是否有一致元素pa=La->next;while(pa){

if(pa->data==pb->data)

{flag=false;break;}elsepa=pa->next;}

if(flag){//元素不同LNode*p=newLNode;p->data=pb->data;p->next=Lc->next;Lc->next=p;}pb=pb->next;}}

voidJiao(LinkListLa,LinkListLb,LinkListLc->next=NULL;LNode*pb=Lb->next;

while(pb)//假使元素即属于集合a又属于集合b,则把该元素放到集合c中{

LNode*pa=La->next;while(pa){

if(pa->data==pb->data)//有一致元素{LNode*p=newLNode;p->data=pb->data;p->next=Lc->next;Lc->next=p;break;

}

elsepa=pa->next;//没有继续后移}pb=pb->next;}}

voidCha(LinkListLa,LinkListLb,LinkListLc->next=NULL;LNode*pa=La->next;

while(pa)//假使元素属于集合a不属于集合b,则把该元素放到集合c中{boolflag=true;LNode*pb=Lb->next;while(pb){

if(pb->data==pa->data)

{flag=false;break;}elsepb=pb->next;}

if(flag){//元素不属于bLNode*p=newLNode;p->data=pa->data;p->next=Lc->next;Lc->next=p;}pa=pa->next;}}

voidoutput(LinkListL)//输出元素{

LNode*p=L->next;while(p){

coutnext;}cout>a;cout>b;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论