集合的并、交和差运算

上传人:公**** 文档编号:418684068 上传时间:2024-02-13 格式:DOCX 页数:24 大小:123.46KB
返回 下载 相关 举报
集合的并、交和差运算_第1页
第1页 / 共24页
集合的并、交和差运算_第2页
第2页 / 共24页
集合的并、交和差运算_第3页
第3页 / 共24页
集合的并、交和差运算_第4页
第4页 / 共24页
集合的并、交和差运算_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《集合的并、交和差运算》由会员分享,可在线阅读,更多相关《集合的并、交和差运算(24页珍藏版)》请在金锄头文库上搜索。

1、集合的并、交和差运算实习报告题目:编制一个演示集合的并、交和差运算的程序班级:姓名:学号:完成日期:一、需求分析1本演示程序中,集合的元素限制在小写字母a-z之间。集合的大小不限制,集合的 输入形式为一个以“回车符”为结束标志的字符串,串中字符顺序不限,且允许出现重复 字符或非法字符,程序运用时自动过滤去,输出的运算结果中将不含重复字符和非法字符2. 演示程序以用户和计算机对话的形式进行,即在计算机终端中显示提示信息之后,有 用户自行选择下一步命令,相应输入数据和运算结果在其后显示。3. 程序的执行命令有:1)选择操作2)任意键清屏4. 数据测试(1) Set1=”magazine”, Set

2、2=paper”,SetlUSet2=” aegimnprz”,SetlQSet2=” ae”,Setl-Set2=” gimnz” ;(2) Set1=”012oper4a6tion89”,Set2=”error data”,Setl USet2=” adeinoprt” ,SetlQSet2=” aeort” , Setl-Set2=”inp” .二、概要设计为实现上述功能,需要顺序表这个抽象数据类型。1. 顺序表抽象数据类型定义ADT sqlist数据对象:D=ailaiGElemset,i=1,2,3, n,n=0数据关系:R1=|aiT,aiED,i=2,n基本操作:InitList

3、(&l)操作结果:构造一个空的顺序表1。ListLength(l) 初始条件:顺序表1已存在。 操作结果:返回1中的元素个数。ListInsert_Sq(&L, i, e) 初始条件:顺序表1已存在。操作结果:在1中第i个元素前面插入元素e。CreatSqList(&1, a,n) 初始条件:顺序表1已存在。操作结果:将数组an每个元素赋给顺序表1。GetE1em(L, i, &e) 初始条件:顺序表1已存在。操作结果:返回1中第i个元素的值LocateE1em_Sq(L, e, Status (*compare)()初始条件:顺序表 l 已存在。 操作结果:依次遍历1中每个元素带入函数。Li

4、stDelete(&L,i, &e) 初始条件:顺序表1已存在。操作结果:删除顺序表中第i个元素。Output1ist(&L) 初始条件:顺序表1已存在。操作结果:输出顺序表的每个元素值。ADT sq1ist三、详细设计/ 程序的头文件#inc1ude#inc1ude#inc1ude#inc1ude/ 函数返回值#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define INFEASIBLE -1#define OVERFLOW -2#define NULL 0#define LIST_INIT_SIZE 100/顺序表的初始

5、大小#define LISTINCREMENT 10 /顺序表的递增大小typedef int Status;/返回状态类型typedef char E1emType; /元素类型typedef structE1emType *e1em;int1ength;int1istsize;SqList;/结点类型 指针类型Status InitList(SqList &1)/初始化顺序表 1.e1em=(E1emType*)ma11oc(LIST_INIT_SIZE*sizeof(E1emType); if(!1.e1em) exit(OVERFLOW);1.1ength=0;1.1istsize=L

6、IST_INIT_SIZE;return OK;int ListLength(SqList l)/求顺序表的长度 return(l.length);Status ListInsert_Sq(SqList &L,int i, ElemType e)/在顺序表L的第i个位置前插入元素e,i的合法值为1.L.length+1 if(iL.length+1)return ERROR;if(L.length=L.listsize)ElemType*newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);

7、if(!newbase) exit(OVERFLOW);L.elem=newbase; L.listsize+=LISTINCREMENT;ElemType *q=&L.elemi-1, *p=&L.elemL.length-1;while(p=q)*(p+1)=*p; -p; /插入位置后的元素右移*q=e;+L.length;return OK;Status CreatSqList(SqList &l,ElemType a,int n)/创建顺序表int len=ListLength(l);for(int i=0;i=a&ai=z) ListInsert_Sq(l,+len,ai);ret

8、urn OK;Status GetElem(SqList L,int i,ElemType &e)/ 返回顺序表中元素 if(iL.length) return ERROR;elsee=*(L.elem+i-1);return OK;Status equal(ElemType e1,ElemType e2)if(e1=e2)return TRUE;elsereturn FALSE;int LocateElem_Sq(SqList L, ElemType e, Status (*compare)(ElemType,ElemType)ElemType *p=L.elem; /p 指向第一个元素 i

9、nt i=1; /i 始终为 p 所指向元素的位序 while(i=L.length&!(*compare)(*p+,e)+i;if(i=L.length) return(i);elsereturn 0;Status ListDelete(SqList &L,int i,ElemType &e)在顺序表L中删除第i个元素,用e返回其值.if(iL.length)return ERROR;/删除位置不合理ElemType *p=&L.elemi-1,*q=L.elem+L.length-1; e=*p;while(pq)*p=*(p+1); +p; /删除位置后的元素左移-L.length;re

10、turn OK;void Union(SqList &La,SqList Lb) /将所有在线性表 Lb 中而不在 La 中的元素插入 Laint la_len , lb_len;ElemType e;la_len=ListLength(La); lb_len=ListLength(Lb);for(int i=1;i=lb_len;+i)GetElem(Lb,i,e);if(LocateElem_Sq(La,e,equal)=0) ListInsert_Sq(La,+la_len,e);Status JiaoJi(SqList l1,SqList l2, SqList &l3) /求集合的交集

11、int l1_len, l2_len,l3_len,i=1,j=1; ElemType e,u; l1_len=ListLength(l1); l2_len=ListLength(l2); l3_len=ListLength(l3); for(i=1;i=1;j-) GetElem(l2,j,u);if(e=u)ListInsert_Sq(l3,+l3_len,u); break;elsecontinue;return OK;Status ChaJi(SqList &l1,SqList l2) /求顺序表的差集SqList lc;int count=0,lc_len,l1_len,l2_len

12、;ElemType e,u,f;InitList(lc);JiaoJi(l1,l2,lc);lc_len=ListLength(lc);l1_len=ListLength(l1);l2_len=ListLength(l2);for(int i=1;i=lc_len;i+)GetElem(lc,i,e);for(int j=1;j=l1_len;j+)GetElem(l1,j,u);if(u=e)ListDelete(l1,j,f);return OK;void Outputlist(SqList &L)if(0=L.length)printf(空集!);elsefor(int i=0;iL.l

13、ength;+i)printf(%c,*(L.elem+i);/程序的主函数void main()system(title 集合的并交叉运算);for(1;)system(color a1);int c;*J / 11f f -*% T|- f 1 1 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx -*% 1 1 1 printf(# 执行程序: 1# 退出程序: 2n);* J / 11f f -*% T|- f 1 1 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号