1、 数据结构数据结构 课程设计报告课程设计报告 题 目: 集 合 运 算 指导老师意见: 评定成绩: 签名: 日期: 1、程序简介、程序简介 此程序是解决集合运算的一个程序。 它使用链表来表示集合, 并完成集合的一些操作,其中包括交集运算、并集运算以及差集 运算。 程序采用多文件的方式构成,包括主函数、界面操作、链表 的建立与输出以及三个操作函数。 主函数主要起对其他文件中的函数调用的作用;界面操作主 要包含主界面及一个选择函数,起到对操作函数的调用作用;链 表的建立和输出函数是对题目要求的满足, 为操作函数分配空间 等作用; 三个操作函数分别为: 交际运算、 并集运算、 差集运算。 构成图 主
2、 函 数 界 面 链 表 操 作 函 2、系统实现、系统实现 (1)主函数:)主函数: #include #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 () int i,k; coutk; if(k4) cout
3、i; while(i!=0) q= (LNode*)malloc(sizeof(LNode); while(!q) coutnext=L; L=q; cini; q=NULL; return L; void printf(LNode *L) /输出链表输出链表 LNode *q; int count=0; q=L; if(q=NULL) couti; COUNT=i; coutdata) q= (LNode*)malloc(sizeof(LNode); q-data=q2-data; q-next=L; L=q; break; q2=q2-next; q1=q1-next; return L;
4、 【2】并集运算】并集运算 LNode * Union(LNode *L1,LNode *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(
5、frag!=1) q= (LNode*)malloc(sizeof(LNode); 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-nex
6、t; if(flag=0) test= (LNode*)malloc(sizeof(LNode); test-data=p-data; test-next=L; L=test; p=p-next; return L; 3、系统测试、系统测试 主界面主界面 交集运算交集运算 并集运算并集运算 4 4、心得体会、心得体会 通过本次的课程设计, 我进一步加深了对数据结构的了解和认识。通过本次的课程设计, 我进一步加深了对数据结构的了解和认识。 虽然我选的题目不是很难, 但是正因为这个题目, 它让我更好地巩固虽然我选的题目不是很难, 但是正因为这个题目, 它让我更好地巩固 了以前所学的知识,扎实了基础。了以前所学的知识,扎实了基础。 前一次的课程设计告诉我的经验是团队的重要性,而此次给我的前一次的课程设计告诉我的经验是团队的重要性