数据结构----集合运算课程设计报告(C++)_第1页
数据结构----集合运算课程设计报告(C++)_第2页
数据结构----集合运算课程设计报告(C++)_第3页
数据结构----集合运算课程设计报告(C++)_第4页
数据结构----集合运算课程设计报告(C++)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数据结构 课程设计报告题 目: 集 合 运 算 学生姓名: 童 侃 学 号: 200917010241 专业班级: 计科09102班 指导教师: 邹汉斌 设计时间: 2011年上学期第2周 指导老师意见: 评定成绩: 签名: 日期:1、程序简介 此程序是解决集合运算的一个程序。它使用链表来表示集合,并完成集合的一些操作,其中包括交集运算、并集运算以及差集运算。 程序采用多文件的方式构成,包括主函数、界面操作、链表的建立与输出以及三个操作函数。主函数主要起对其他文件中的函数调用的作用;界面操作主要包含主界面及一个选择函数,起到对操作函数的调用作用;链表的建立和输出函数是对题目要求的满足,为操作

2、函数分配空间等作用;三个操作函数分别为:交际运算、并集运算、差集运算。 构成图操作函数链表界面主函数2、系统实现(1)主函数:#include<iostream>#define MAXSIZE 10 /最大集合个数static int COUNT=0; /记录集合个数using namespace std;#include"11.h"#include"12.h"#include"13.h"int main()output(); /输出数据menu (); /主菜单return 0;( 2 ) 主界面:void select

3、 ()int i,k;cout<<" 请注意,下面开始进入系统!"<<endl;cout<<" "<<endl;cout<<" * 集合的运算 *"<<endl;cout<<" "<<endl;cout<<" *"<<endl;cout<<" * 1.交集运算 *"<<endl;cout<<" * 2.并集运算

4、*"<<endl;cout<<" * 3.差集运算 *"<<endl;cout<<" * 4.退出 *"<<endl;cout<<" *"<<endl;cout<<" "<<endl;cout<<"请选择(1-4):"while(1)cin>>k; if(k<1|k>4) cout<<endl<<"t输入错误,

5、请重新输入:(1-4) " elsebreak;switch(k)case 1: H=Cross(L0,L1);if(COUNT>2)for(i=2;i<COUNT;i+)H=Cross(H,Li);printf(H);select ();break;case 2: H=Union(L0,L1);if(COUNT>2)for(i=2;i<COUNT;i+)H=Union(H,Li);printf(H);select ();break; case 3:H=Subtract(L0,L1);if(COUNT>2)for(i=2;i<COUNT;i+)H=

6、Subtract(H,Li);printf(H);select ();break;case 4: return; (3)链表及输出函数typedef struct LNodeint data; /数据struct LNode *next; /指针LNode;LNode *LMAXSIZE,*H;LNode * Linklist(LNode *L) /建立链表LNode *q;int i;L=NULL;cout<<" 请您输入集合数据:"<<endl;cin>>i;while(i!=0)q= (LNode*)malloc(sizeof(LN

7、ode);while(!q)cout<<"分配内存失败!"<<endl;q->data =i;q->next=L;L=q;cin>>i; q=NULL;return L;void printf(LNode *L) /输出链表 LNode *q;int count=0;q=L;if(q=NULL)cout<<"集合为空!"<<endl;cout<<"集合数据:"while(q)cout<<q->data<<" &q

8、uot;q=q->next ;+count;cout<<"数据元素个数:"<<count<<endl;void output()int i;cout<<"请问您要构建几个集合(小于10个):"cin>>i;COUNT=i;cout<<"!输入数据时,输入0表示输入结束"<<endl;while(i)cout<<"集合"<<COUNT-i+1;LCOUNT-i=Linklist(LCOUNT-i);i-;

9、(4)操作函数【1】交集运算LNode * Cross(LNode *L1,LNode *L2) LNode *q1,*q2,*L,*q;L=NULL;q1=L1;while(q1!=NULL)q2=L2;while(q2!=NULL)if(q2->data=q1->data)q= (LNode*)malloc(sizeof(LNode);q->data=q2->data;q->next=L;L=q;break;q2=q2->next;q1=q1->next;return L;【2】并集运算LNode * Union(LNode *L1,LNode *

10、L2)LNode *q1,*q2,*L,*q;int frag=0;L=NULL;q1=L1;while(q1!=NULL)q= (LNode*)malloc(sizeof(LNode);q->data=q1->data;q->next=L;L=q;q1=q1->next; q2=L2;while(q2!=NULL)q1=L1;frag=0;if(q1!=NULL)while(q1)if(q1->data=q2->data)frag=1;break;q1=q1->next;if(frag!=1)q= (LNode*)malloc(sizeof(LNod

11、e);q->data=q2->data;q->next=L;L=q;q2=q2->next;return L;【3】差集运算LNode * Subtract(LNode *L1,LNode *L2)LNode *L,*p,*q,*test;int flag=0;p=L1;q=L2;L=NULL;while(p)/ 直接除掉L1中包含在L2中的元素flag=0;while(q)if(p->data=q->data)flag=1;break;q=q->next;if(flag=0)test= (LNode*)malloc(sizeof(LNode);test->data=p->data;test->next=L;L=test;p=p->next;return L; 3、系统测试 主界面交集运算并集运算4、心得体会 通过本次的课程设计,我进一步加深了对数据结构的了解和认识。虽然我选的题目不是很难,但是正因为这个题目,它让我更好地巩固了以前所学的知识,扎实了基础。前一次的课程设计告诉我的经验是团队的重要性,而此次给我的启示是:对待一个问题应该先做好分析工作,只有正确的分析问题才能找出好的方法,否则会误入歧途。俗话说磨刀不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论