数据结构----集合运算课程设计报告(C++)
时间:2025-07-09
时间:2025-07-09
这是我自己做的有关集合运算的数据结构课程设计报告
课程设计报告
题 目:学生姓名: 童 侃 学 号:专业班级:指导教师: 邹汉斌 设计时间: 2011年上学期第2周
这是我自己做的有关集合运算的数据结构课程设计报告
1、程序简介
此程序是解决集合运算的一个程序。它使用链表来表示集合,并完成集合的一些操作,其中包括交集运算、并集运算以及差集运算。
程序采用多文件的方式构成,包括主函数、界面操作、链表的建立与输出以及三个操作函数。
主函数主要起对其他文件中的函数调用的作用;界面操作主要包含主界面及一个选择函数,起到对操作函数的调用作用;链表的建立和输出函数是对题目要求的满足,为操作函数分配空间等作用;三个操作函数分别为:交际运算、并集运算、差集运算。
这是我自己做的有关集合运算的数据结构课程设计报告
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 ()
{
int i,k; cout<<" 请注意,下面开始进入系统!"<<endl; cout<<" "<<endl; cout<<" **** 集合的运算 ****"<<endl;
这是我自己做的有关集合运算的数据结构课程设计报告
cout<<" ************************"<<endl; cout<<" ***** 1.交集运算 *****"<<endl; cout<<" ***** 2.并集运算 *****"<<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输入错误,请重新输入:(1-4) "; else
} switch(k) { case 1: { H=Cross(L[0],L[1]); break;
这是我自己做的有关集合运算的数据结构课程设计报告
} { } printf(H); select (); for(i=2;i<COUNT;i++) { } H=Cross(H,L[i]); break; case 2: {
H=Union(L[0],L[1]);
if(COUNT>2) { } printf(H); for(i=2;i<COUNT;i++) { } H=Union(H,L[i]);
这是我自己做的有关集合运算的数据结构课程设计报告
} break; case 3: { } break; H=Subtract(L[0],L[1]); if(COUNT>2) { } printf(H); select (); for(i=2;i<COUNT;i++) { } H=Subtract(H,L[i]); case 4: return; }
}
(3)链表及输出函数
typedef struct LNode
这是我自己做的有关集合运算的数据结构课程设计报告
int data; //数据 struct LNode *next; //指针
}LNode;
LNode *L[MAXSIZE],*H;
LNode * Linklist(LNode *L) //建立链表
{
LNode *q; int i; L=NULL; cout<<" 请您输入集合数据:"<<endl; cin>>i; while(i!=0) { q= (LNode*)malloc(sizeof(LNode)); while(!q) { } q->data =i; q->next=L; L=q; cout<<"分配内存失败!"<<endl;
这是我自己做的有关集合运算的数据结构课程设计报告
} q=NULL;
}
void printf(LNode *L) //输出链表
{
LNode *q;
}
void output() int count=0; q=L; if(q==NULL) cout<<"集合为空!"<<endl; return L; cout<<"集合数据:"; while(q) { } cout<<"数据元素个数:"<<count<<endl; cout<<q->data<<" "; q=q->next ; ++count;
这是我自己做的有关集合运算的数据结构课程设计报告
} int i; cout<<"请问您要构建几个集合(小于10个):"; cin>>i; COUNT=i; cout<<"!!输入数据时,输入0表示输入结束"<<endl; while(i) { } cout<<"集合"<<COUNT-i+1; L[COUNT-i]=Linklist(L[COUNT-i]); i--;
(4)操作函数
【1】交集运算
LNode * Cross(LNode *L1,LNode *L2)
{
LNode *q1,*q2,*L,*q; L=NULL; q1=L1; while(q1!=NULL) {
这是我自己做的有关集合运算的数据结构课程设计报告
} } while(q2!=NULL) { } q1=q1->next; if(q2->data==q1->data) { } q2=q2->next; q= (LNode*)malloc(sizeof(LNode)); q->data=q2->data; q->next=L; L=q; break; return L;
【2】并集运算
LNode * Union(LNode *L1,LNode *L2)
{
LNode *q1,*q2,*L,*q; int frag=0;
这是我自己做的有关集合运算的数据结构课程设计报告
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;
这是我自己做的有关集合运算的数据结构课程设计报告
} } } } } q1=q1->next; if(frag!= …… 此处隐藏:1260字,全部文档内容请下载后查看。喜欢就下载吧 ……