数据结构----集合运算课程设计报告(C++)

时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……

数据结构----集合运算课程设计报告(C++).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219