c语言数据结构单链表的交并差集运算实现(共7页).docx

上传人:飞****2 文档编号:14015696 上传时间:2022-05-02 格式:DOCX 页数:7 大小:17.45KB
返回 下载 相关 举报
c语言数据结构单链表的交并差集运算实现(共7页).docx_第1页
第1页 / 共7页
c语言数据结构单链表的交并差集运算实现(共7页).docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《c语言数据结构单链表的交并差集运算实现(共7页).docx》由会员分享,可在线阅读,更多相关《c语言数据结构单链表的交并差集运算实现(共7页).docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上数据结构上机实验 课后练习报告姓名:冯天明学号:班级:通信1412015年9月28日星期一实验五:实现A 、B两个单链表表示的集合的交集、并集和差集实验代码:#include#include#define OK 0#define ERROR -1#define OVERFLOW -2typedef int ElemType;typedef struct LNodeElemType data; /定义数据域LNode *next; /定义指针域 LNode,*LinkList;void InitList(LinkList *L) /创建链表头*L = ( LinkLis

2、t )malloc( sizeof(LNode) );if(!L) exit(OVERFLOW); /头结点内存申请失败(*L)-next = NULL;void DerstorList(LinkList &L) /清空链表LinkList p;while(L-next)p = L-next;L-next = p-next;free(p);void ClearList(LinkList *L,int n) /初始化链表LinkList p ; int i;for(i = 0;idata);p-next = (*L)-next; /头插法( *L)-next = p; void InserLis

3、t(LinkList *L,ElemType e) /头插法插入数据LinkList p;p = (LinkList )malloc(sizeof( LNode );p-data = e;p-next = (*L)-next; /头插法( *L)-next = p; void DisplaList(LinkList L) /输出链表LinkList head;head = L-next;if(head=NULL)printf(集合为空!n);while(head) /遍历链表printf(%4d,head-data); /输出节点信息head = head-next;printf(n);int

4、 isPresent(LinkList L,ElemType data) /判断链表中是否已经存在data该元素LinkList p = L-next;while(p) /遍历链表,查找是否存在data值if( p-data = data ) return 1;p = p-next; return 0; /*求两个链表的交集*/int Intersection(LinkList L1,LinkList L2,LinkList L3) LinkList p,q;p = L1-next;q = L2-next;while( p )while( q ) /判断两链表的元素是否相当,并且存入的链表中不

5、存在该元素即可存入if(p-data = q-data & !isPresent(L3,p-data)InserList(&L3,p-data);q = q-next; q = L2-next; /复位p = p-next;return OK;/*求链表的并集*/void Union(LinkList L1,LinkList L2,LinkList L3)LinkList p,q;p = L1-next;q = L2-next; DerstorList(L3); /清空链表,重新存入数据while( p )/如果p中的元素不在并集链L3中,防止L1中有重复元素if(!isPresent(L3,

6、p-data) InserList(&L3,p-data); /插入元素p = p-next;p = L1-next;while(q)if(!(isPresent(L3,q-data) /q-data元素不存在并集表中,则插入 InserList(&L3,q-data); /把L2表中的元素插入q = q-next;/*求链表的差集*/void Subtraction(LinkList L1,LinkList L2,LinkList L3)LinkList p,q;p = L1-next;q = L2-next;DerstorList(L3);while(p)if(!(isPresent(L2

7、,p-data) /如果L2中不存在data值,即为L1-L2差集InserList(&L3,p-data);p = p-next; void main()LinkList L1,L2,L3;int number;InitList(&L1); /创建空链表InitList(&L2);InitList(&L3); /存储交并差集的链表printf(请输入链表L1的元素个数:);scanf(%d,&number);printf(输入链表L1的内容:n);ClearList(&L1,number); /初始化链表L1printf(请输入链表L2的元素个数:);scanf(%d,&number);pr

8、intf(输入链表L2的内容:n);ClearList(&L2,number); /初始化链表L2 printf(L1:);DisplaList(L1);printf(L2:);DisplaList(L2);printf(L1 L2为(交集):); Intersection(L1,L2,L3); /求链表L1与L2的交集DisplaList(L3);printf(L1 L2为(并集):); Union(L1,L2,L3); /求链表L1 L2的并集DisplaList(L3);printf(L1 - L2(补集):);Subtraction(L1,L2,L3); /求链表L1 L2 的差集(补集)DisplaList(L3); 专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁