java 单链表差集_c语言数据结构单链表的交并差集运算实现

《c语言数据结构单链表的交并差集运算实现》由会员分享,可在线阅读,更多相关《c语言数据结构单链表的交并差集运算实现(8页珍藏版)》请在人人文库网上搜索。

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 = ( LinkList )malloc( si。

2、zeof(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 InserList(LinkList *L,。

3、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 isPresent(Lin。

4、kList 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 )/判断两链表的元素是否相当,并且存入的链表中不存在该元素即可存入if(p-da。

5、ta = 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,p-data) InserList(。

6、&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,p-data) /如果L2中不存在。

7、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);printf(输入链表L2的内容:n);ClearList(&L2,number); /初始化链表L2printf(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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值