大数据结构课程设计报告材料集合地交并差运算.doc
《大数据结构课程设计报告材料集合地交并差运算.doc》由会员分享,可在线阅读,更多相关《大数据结构课程设计报告材料集合地交并差运算.doc(22页珍藏版)》请在课桌文档上搜索。
1、数据结构课程设计报告作 者:学 号:班 级:学 院:专业:题 目:年月1 课题描述编制一个能演示执行集合的交、并和差运算的程序。集合元素用小写英文字母,执行各种操作应以对话方式执行。利用单链表表示集合;理解好三种运算的含义2 系统设计1节点结构单元模块定义有序表的节点结构;typedef struct LNode/定义结构体类型指针 char data;struct LNode*next;*pointer;2有序表单元模块实现有序表的抽象数据类型;readdata(pointer head)初始条件:head是以head为头节点的空链表。操作结果:生成以head为头节点的非空链表。pop(po
2、inter head)初始条件:head是以head为头节点的非空链表。操作结果:将以head为头节点的链表中数据逐个输出。3集合单元模块实现集合获得抽象数据类型;and(pointer head1,pointer head2,pointer head3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的并集构成的集合head3。or(pointer head1,pointer head2,pointer head3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的交集构成的集合head3。4主程
3、序模块Void main初始化;do承受命令;处理命令;while“命令!=“退出;1顺序表结构单元模块定义顺序表的结构体;typedef struct /定义SeqList的结构体DataType listMaxSize;int size ; SeqList;2函数单元模块定义各种所需函数;int ListDel( SeqList *L , int i , DataType *x)/顺序表的删除函数int ListGet(SeqList L , int i , DataType *x)/获取顺序表的元素函数void ListFind(SeqList L , DataType x)/顺序表查找
4、元素函数void SelcetSort(SeqList *L )/顺序表选择排序函数void UnionSet(SeqList mylist1 , SeqList mylist2)/求并集函数void MixedSet(SeqList mylist1 , SeqList mylist2)/求交集元素函数void DiffentSet(SeqList mylist1 , SeqList mylist2) /求差集元素函数3主函数单元模块定义主函数;void main() SeqList mylist1 , mylist2;/定义顺序表mylistint i;DataType temp;ListI
5、nitiate( &mylist1);ListInitiate( &mylist2);/初始化两个顺序表定义结构体类型指针,集合采用单链表存储。typedef struct LNode/定义结构体类型指针head1=(pointer)malloc(sizeof(struct LNode);head1-next=NULL;head2=(pointer)malloc(sizeof(struct LNode);head2-next=NULL;head3=(pointer)malloc(sizeof(struct LNode);typedef struct /定义SeqList的结构体 DataTyp
6、e listMaxSize;int size ;void UnionSet(SeqList mylist1 , SeqList mylist2) /求并集int m, i,j ;DataType x;SeqList Test;ListInitiate( &Test); /定义并初始化2.3.1基于单链表,顺序表设计 数据输入界面 主菜单界面 完毕 集合的差集运算 集合的交集运算 集合的并集运算图2.1系统模块流程图调用输入函数,输入集合信息 显示主菜单 承受用户选择是否合法否 是是否为4否 是 退出系统调用对应选项函数图2.2主菜单流程图 主菜单 用户选择序号是否合法 否 是是否为1 否 是调
7、用并集函数和输出函数图2.3并集模块流程图求交集与差集的流程图与并集类似。3 详细设计3.1菜单设计基于单链表图3.1主界面3.2源代码设计基于单链表#include#includetypedef struct LNode/定义结构体类型指针char data;struct LNode*next;*pointer;void readdata(pointer head)/定义输入集合函数pointer p;char tmp;scanf(%c,&tmp);while(tmp!=n)p=(pointer)malloc(sizeof(struct LNode);/为指针P申请内存空间p-data=tm
8、p;p-next=head-next;head-next=p;scanf(%c,&tmp);void pop(pointer head)/定义输出集合函数 pop()出栈函数pointer p;p=head-next;while(p!=NULL)printf(%c,p-data);p=p-next;printf(n);void and(pointer head1,pointer head2,pointer head3)/定义集合的并集函数pointer p1,p2,p3;p1=head1-next;while(p1!=NULL)/遍历链表head1 p3=(pointer)malloc(siz
9、eof(struct LNode);p3-data=p1-data;p3-next=head3-next;head3-next=p3;p1=p1-next;p2=head2-next;while(p2!=NULL)/遍历链表head2p1=head1-next;while(p1!=NULL)&(p1-data!=p2-data) p1=p1-next;if (p1=NULL)p3=(pointer)malloc(sizeof(struct LNode);p3-data=p2-data;p3-next=head3-next;head3-next=p3;p2=p2-next;void or(poi
10、nter head1,pointer head2,pointer head3)/定义集合的交集函数pointer p1,p2,p3;p1=head1-next;while(p1!=NULL)p2=head2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2!=NULL)&(p2-data=p1-data)p3=(pointer)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=head3-next;head3-next=p3;p1=p1-next;void differ(poin
11、ter head1,pointer head2,pointer head3)/定义集合的差集函数pointer p1,p2,p3;p1=head1-next;while(p1!=NULL)p2=head2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2=NULL)p3=(pointer)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=head3-next;head3-next=p3;p1=p1-next;void main()/主函数int x; printf(输入数据,按回
12、车键完毕,第一个集合大于第二个集合)n);pointer head1,head2,head3;head1=(pointer)malloc(sizeof(struct LNode);head1-next=NULL;head2=(pointer)malloc(sizeof(struct LNode);head2-next=NULL;head3=(pointer)malloc(sizeof(struct LNode);head3-next=NULL;printf(请输入集合1:n);readdata(head1);/调用输入集合函数printf(请输入集合2:n);readdata(head2);/
13、调用输入集合函数A:printf(1.并集 2.交集 3.差集 4.完毕 x.重新运算n); doprintf(请选择序号n);scanf(%d,&x);switch(x)case 1:printf(两集合的并是n);and(head1,head2,head3);/调用并集函数pop(head3);head3-next=NULL;break;case 2:printf(两集合的交是n);or(head1,head2,head3);/调用交集函数pop(head3);head3-next=NULL;break;case 3: printf(两集合的差是n);differ(head1,head2,
14、head3);/调用差集函数pop(head3);head3-next=NULL;break; case 4:break;default:goto A;while(x!=4);3.3菜单设计基于顺序表图3.2主界面3.4源代码设计基于顺序表#include #include #include #define MaxSize 100# define EQUAL =typedef char DataType;typedef struct /定义SeqList的结构体DataType listMaxSize; int size ; SeqList; void ListInitiate( SeqLis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 材料 集合 交并 运算
链接地址:https://www.desk33.com/p-23168.html