1 / 21
文档名称:

C语言实现集合的交-并-差.doc

格式:doc   大小:53KB   页数:21页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言实现集合的交-并-差.doc

上传人:书犹药也 2019/8/8 文件大小:53 KB

下载得到文件列表

C语言实现集合的交-并-差.doc

相关文档

文档介绍

文档介绍:C语言实现集合的交-并-差【问题描述】编制一个能演示执行集合的并、交和差运算的程序【基本要求】(1)集合的元素限定为小写字母字符['a'......'z'](2)演示程序以用户和计算机对话的方式执行【测试数据】【实现提示】以有序链表表示集合【代码过程】1。//...{ElemTypedata;LNode*next;}*Link,*Position;typedefstruct...{Linkhead,tail;intlen;}LinkSet;//~2。#include<>#include<>#include<>//函数结果状态代码#RUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineElemTypeint//存放数据的类型typedefintStatus;//函数的返回值//~3。/**//******************函数定义*********************/StatusInitSets(LinkSet&ls)...{//=(Link)malloc(sizeof(Link));=(Link)malloc(sizeof(Link));if(!||!)exit(OVERFLOW);//->next=->next=NULL;//头、=0;//长度为0returnOK;}StatusCreateNode(Link&link,ElemTypee)...{//创建一节点,内容为elink=(Link)malloc(sizeof(Link));if(!link)exit(OVERFLOW);link->data=e;//值设定link->next=NULL;//指向空returnOK;}PositionPriorInsertNode(LinkSet&ls,Link&link)...{//找出节点link要插入到ls的前一个节点if(!->next);Linkh1=->next,h2=h1->next;//h1:前一节点,h2:前一节点的后一节点if(link->data<h1->data);//如果比第一个节点小,返回头指针while(h1&&h2)...{if(h1->data<(link->data)&&h2->data>(link->data))//如果>h1&&<h2,说明找到插入的地方了break;if(h1->data==(link->data)||h2->data==(link->data))returnNULL;//如果重复,返回NULLelse//否则,顺次往后挪一个节点h1=h2,h2=h1->next;}returnh1;}StatusAppend(LinkSet&ls,Link&link)...{//向集合末尾追加节点if(->next==NULL)->next=link;->next->next=link;->next=link;++;returnOK;}StatusInsertNode(LinkSet&ls,Link&link)...{//向集合中插入节点Positionp=PriorInsertNode(ls,link);if(!p)returnERROR;//如果集合中已有相应元素link->next=p->next;if(!p->next)->next=link;//如果前一节点为尾节点,修改tailp->next=link;++;returnOK;}PositionPriorNode(LinkSet&ls,Link&link)...{//返回集合中该节点的前一节点,不存在返回NULLintj=0;Linkpre,h=;while(h->next&&j<=&&h!=link)...{pre=h;h=h->next;j++;}if(j==0)returnNULL;returnpre;}StatusPrintSets(LinkSet&ls)...{//打印集合Linkh=->next;printf("[");while(h)...{pr