数据结构与数据库实验一集合的运算.doc

上传人:飞****2 文档编号:66797704 上传时间:2022-12-21 格式:DOC 页数:16 大小:242.50KB
返回 下载 相关 举报
数据结构与数据库实验一集合的运算.doc_第1页
第1页 / 共16页
数据结构与数据库实验一集合的运算.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《数据结构与数据库实验一集合的运算.doc》由会员分享,可在线阅读,更多相关《数据结构与数据库实验一集合的运算.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据结构与数据库实验仅供参考实验一 集合的表示及运算实验名称: 集合的表示及运算 专 业: 电气工程 姓 名: 学 号: 集合的表示及运算一、 实验要求1程序的功能:实现集合的交、并、判断相等运算。2输入输出的要求:设计的数据结构应有利于表示任意个数元素组成的集合。3测试数据。(1) a, b, c, b, c, d(2) a, b,c, x, y(3) , x, y(4) a, x, b, a, x, b二、 概要设计1采用的数据结构的定义及主要功能模块的功能: 在本实验中,数据的存储采用数组连续存储方式。由于本实验相对简单,功能相对较少,只是针对数组进行交并等基础性操作,所以本实验中只采用

2、了函数模板,这样比结构体、类以及类模板都更加简洁、易懂,也更有利于实现对多种数据类型的数据进行操作。而且,为了满足设计的数据结构应有利于表示任意个数元素组成的集合,在本实验中采用由用户自己输入所需存储空间的最大长度,动态分配所需存储空间。由于含有动态生成的数据成员,必须自定义析构函数以释放动态分配的内存,本实验中的析构函数为(*,T*)。 字符串的比较采用string类、各个函数模板的声明及其功能如下:1、判断集合是否相等的运算:templatevoid deng_array(T*A,T*B,int A_mm,int B_mm);/A、B为需要进行判断是否相等的数组,A_mm、B_mm 分别为

3、数组、的最大存储空间,由用户在输入数组数据时确定并输入,算法根据用户输入的数据动态建立相应的存储空间。以下各形式参量的意义均与此相同。2、集合的交运算:templatevoid jiao_array(T*A,T*B,int A_mm,int B_mm);3、集合的并运算:templatevoid bing_array(T*A,T*B,int A_mm,int B_mm);4、析构函数:templatevoid Delete(T*A,T*B);/释放动态分配的内存5、字符串的交运算template string jiao_string(T & A,T &B);6、字符串的并运算template

4、string jiao_string(T & A,T &B);7、判断字符串是否相等:采用string中的=if(A=B)coutEQUALendl;coutNOT EQUALendl;三、 详细设计1、各模块的流程图:1、判断集合是否相等的运算:数组长度是否相等是否逐个比较数组中的元素是否相等结束,输出NOT EQUAL是结束,输出EQUAL2、集合的交运算:数组中是否有空集结束,输出NULL否 比较两个数组长度以较小的长度建立新数组,作为交集合用A中的每一个元素与B中的元素比较相等则存入C3、集合的并运算:数组A、B是否为空有一个为空,不为空的数组即为并集数组A、B均为空结束,输出NULL

5、去量数组长度的和,建立新数组,用于并集合先把A复制到C中用B中的每一个元素与C中的元素比较不相等则存入C4、析构函数:释放动态分配的内存:deleteA;deleteB;5、字符串的交运算数组A、B是否为空A、B均为空结束,输出NULL从A中取出一个字符在B中寻找它的出现位置在B中,则复制到C中重复上述循环,直到最后一个元素6、字符串的并运算数组A、B是否为空有一个为空,不为空的数组即为并集数组A、B均为空结束,输出NULL先把A复制到C中用B中的每一个元素与C中的元素比较不相等则存入C四、 调试分析1、在本实验中,集合的数据类型可以实现字符型、整型,用户可根据系统提示进行选择。初始界面如下:

6、2、若选择字符型:3、输入数组A、B的存储空间长度A_mm、B_mm,然后分别输入数组数据,最后输出执行结果:4、整型与此类似:测试数据的输出结果:(1) a, b, c, b, c, d(2) a, b,c, x, y(3) , x, y(4) a, x, b, a, x, b(5)字符串的测试数据A=”qwert”B=”ert”源程序:#include#includeusing namespace std;templatevoid deng_array(T*A,T*B,int A_mm,int B_mm)int i;if(A_mm!=B_mm)coutNOT EQUALendl;retur

7、n;for(i=0;iA_mm;i+)if(Ai!=Bi)coutNOT EQUALendl;return;coutEQUALendl;return;templatevoid jiao_array(T*A,T*B,int A_mm,int B_mm)int i,j,k,t,m;T*C;/=NULL;if(A_mm=0|B_mm=0)coutNULLB_mm ? A_mm:B_mm;t=0;C=new Tk;for(i=0;iA_mm;i+)for(j=0;jB_mm;j+)if(Ai=Bj)Ct=Ai;t+;if(t=0)coutNULLendl;return;m=0;while(mt) co

8、utCmt;m+;coutendl;m=0;while(mt) coutCmt;m+;return;templatevoid bing_array(T*A,T*B,int A_mm,int B_mm)int i,j,k,t;T*C;int*D;if(A_mm=0&B_mm=0)coutNULLendl;return;else if(A_mm=0&B_mm!=0)t=B_mm;C=new Tt;for(j=0;jt;j+) Cj=Bj;for(int k=0;kt;k+)coutCk;coutt;coutendl;for(int p=0;pt;p+)coutCpt;coutendl;else i

9、f(A_mm!=0&B_mm=0)t=A_mm;C=new Tt;for(i=0;it;i+) Ci=Ai;for(int h=0;ht;k+)coutCk;coutt;coutendl;for(int p=0;pt;p+)coutCpt;coutendl;else if(A_mm!=0&B_mm!=0)t=A_mm+B_mm;k=A_mm;D=new intB_mm;C=new Tt;for(i=0;iB_mm;i+) Di=0;for(i=0;iA_mm;i+) Ci=Ai;j=0;while(jB_mm)for(i=0;iA_mm;i+)if(Bj=Ci)Dj=1;break;j+;fo

10、r(int q=0;qB_mm;q+)if(Dq=0)Ck=Bq;k+;int n=0;while(nk)coutCn;coutt;n+;coutendl;for(int p=0;pk;p+)coutCpt;coutendl;return;templatevoid Delete(T*A,T*B)delete A;delete B;return;template string bing_string(T & A,T &B)T C=A;int i;int Amm=A.length();int Bmm=B.length();for(i=0;iBmm;i+)string ch=B.substr(i,1

11、);int l=A.find(ch,0);if(l=Amm) C=C+ch;return C;template string jiao_string(T & A,T &B)T C;int i;int k=0;int Amm=A.length();int Bmm=B.length();for(i=0;i=k&lAmm) C=C+ch;return C;int main()int Amm,Bmm;char AB;/ INT,CHAR,STRING;coutChoose The Type of Data. CHAR(c/C) OR INT(i/I) OR STRING (S/s)AB;if(AB=C

12、|AB=c)coutTYPE CHAR 字符型endl;int i=0;int j=0;char *A;char *B;Amm=0;Bmm=0;coutEntertAmmAmm; couttBmmBmm;coutendl; A=new charAmm;B=new charBmm;coutEntert;while(iAmm)coutAit;i+;coutendl;i=0;while(iAi;coutt;i+; coutendl;coutEntert;while(jBmm)coutBjt;j+;coutendl;j=0;while(jBj;coutt;j+; coutendl;coutThe re

13、sult of jiaoendl;jiao_array(A,B,Amm,Bmm);coutendl; coutThe result of dengendl; deng_array(A,B,Amm,Bmm);coutThe result of bingendl; bing_array(A,B,Amm,Bmm);Delete(A,B);return 0;if(AB=S|AB=s)coutTYPE string 字符串endl;int i=0;int j=0;string A;string B;Amm=0;Bmm=0;char ch=;coutEnter string A and end with

14、endl;getline(cin,A,ch); coutendl;coutEnter string B and end with endl;getline(cin,B,ch);coutendl; coutendl;coutThe result of jiaoendl;string s;s=jiao_string(A,B);coutsendl;coutendl; coutThe result of dengendl;if(A=B)coutEQUALendl;coutNOT EQUALendl; /deng_array(A,B,Amm,Bmm);coutThe result of bingendl

15、;string c; c=bing_string(A,B); coutcendl; /bing_array(A,B,Amm,Bmm);/Delete(A,B);return 0;/ if(AB=I|AB=i)coutTYPE int 整型endl;int i=0;int j=0;int *A;int *B;Amm=0;Bmm=0;coutEntertAmmAmm; couttBmmBmm;coutendl; A=new intAmm;B=new intBmm;coutEntert;while(iAmm)coutAit;i+;coutendl;i=0;while(iAmm)coutAi;/cou

16、tendl;i+; coutendl;coutEntert;while(jBmm)coutBjt;j+;coutendl;j=0;while(jBmm)coutBj;/coutendl;j+;coutendl; coutendl;coutThe result of jiaoendl;jiao_array(A,B,Amm,Bmm);coutendl; coutThe result of dengendl; deng_array(A,B,Amm,Bmm);coutThe result of bingendl; bing_array(A,B,Amm,Bmm);Delete(A,B);return 0;/Array.deng_array(A3,B3,Amm,Bmm);return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁