欢迎来到天天文库
浏览记录
ID:37407763
大小:52.50 KB
页数:9页
时间:2019-05-23
《c语言实现集合地交,并,差》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实用文案【问题描述】编制一个能演示执行集合的并、交和差运算的程序【基本要求】(1)集合的元素限定为小写字母字符['a'......'z'](2)演示程序以用户和计算机对话的方式执行【测试数据】【实现提示】以有序链表表示集合【代码过程】1。先定义集合的数据类型notes.h//notes.htypedefstructLNode...{ElemTypedata;LNode*next;}*Link,*Position;typedefstruct...{Linkhead,tail;intlen;}LinkSet;//~2。以后要用的一些常量放在constValues.h#include2、io.h>#include#include//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineElemTypeint//存放数据的类型typedefintStatus;//函数的返回值//~3。集合实现函数setsFun.h/**//******************函数定义*********************/StatusInitSets(LinkSet&ls)...{标准文档实用文案//3、初始化集合ls.head=(Link)malloc(sizeof(Link));ls.tail=(Link)malloc(sizeof(Link));if(!ls.head4、5、!ls.tail)exit(OVERFLOW);//如果分配失败ls.head->next=ls.tail->next=NULL;//头、尾指针为空ls.len=0;//长度为0returnOK;}StatusCreateNode(Link&link,ElemTypee)...{//创建一节点,内容为elink=(Link)malloc(sizeof(Link));if(!link)exit(OVERFLOW);6、link->data=e;//值设定link->next=NULL;//指向空returnOK;}PositionPriorInsertNode(LinkSet&ls,Link&link)...{//找出节点link要插入到ls的前一个节点if(!ls.head->next)returnls.head;Linkh1=ls.head->next,h2=h1->next;//h1:前一节点,h2:前一节点的后一节点if(link->datadata)returnls.head;//如果比第一个节点小,返回头指针while(h1&&h2)...{if(h1->data<(link-7、>data)&&h2->data>(link->data))//如果>h1&&data==(link->data)
2、io.h>#include#include//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineElemTypeint//存放数据的类型typedefintStatus;//函数的返回值//~3。集合实现函数setsFun.h/**//******************函数定义*********************/StatusInitSets(LinkSet&ls)...{标准文档实用文案//
3、初始化集合ls.head=(Link)malloc(sizeof(Link));ls.tail=(Link)malloc(sizeof(Link));if(!ls.head
4、
5、!ls.tail)exit(OVERFLOW);//如果分配失败ls.head->next=ls.tail->next=NULL;//头、尾指针为空ls.len=0;//长度为0returnOK;}StatusCreateNode(Link&link,ElemTypee)...{//创建一节点,内容为elink=(Link)malloc(sizeof(Link));if(!link)exit(OVERFLOW);
6、link->data=e;//值设定link->next=NULL;//指向空returnOK;}PositionPriorInsertNode(LinkSet&ls,Link&link)...{//找出节点link要插入到ls的前一个节点if(!ls.head->next)returnls.head;Linkh1=ls.head->next,h2=h1->next;//h1:前一节点,h2:前一节点的后一节点if(link->datadata)returnls.head;//如果比第一个节点小,返回头指针while(h1&&h2)...{if(h1->data<(link-
7、>data)&&h2->data>(link->data))//如果>h1&&
8、
9、h2->data==(link->data))returnNULL;//如果重复,返回NULLelse//否则,顺次往后挪一个节点h1=h2,h2=h1->next;}returnh1;}StatusAppend(LinkSet&ls,Link&link)...{//向集合末尾追加节点if(ls.head->next==NULL)ls.head->next=link;elsels.tail->next->next=l
10、ink;ls.tail->next=link;ls.len++;标准文档实用文案returnOK;}StatusInsertNode(LinkSet&ls,Link&link)...{//向集合中插入节点Positionp=PriorInsertNode(ls,link);if(!p)returnERROR;//如果集合中已有相应元素link->next=p->next;if(!p->next)ls.tail->next=link;//如果前一节点为尾节点,修改tailp->next=link;ls.len++;returnOK;}PositionPriorNode(LinkSet&l
11、s,Link&link)...{//返回集合中该节点的前一节点,不存在返回NULLintj=0;Linkpre,h=ls.head;while(h->next&&j<=ls.len&&h!=link)...{pre=h;h=h->next;j++;}if(j==0)returnNULL;returnpre;}StatusPrintSets(LinkSet&ls)...{//打印集合Linkh=ls.head->next;printf("[");
此文档下载收益归作者所有