网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构—集合的并、交、差运算.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告 题目:编制一个演示集合的并、交、和差运算的程序 问题描述:设计一个程序,要求实现集合的并、交、和差的运算 需求分析 本演示程序中,集合的元素限定为数字。 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入中的非法字符)和运算结果显示在其后。 程序执行的命令包括: 构造集合1;2)构造集合2;3)求并集;4)求交集;5)求差集;6)结束。 “构造集合1”和“构造集合2”时,需以字符串的形式键入集合元素。 测试数据 (1) A={1、2、3、4、9} B={2、3、5、7、8} A∪B={9、4、3、2、1、8、7、5} A∩B={3、2} A-B={9、4、1} 概要设计 为实现上述程序功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合 有序表的抽象数据类型定义为: ADT OrderedList{ 数据对象:D={ai|ai∈CharSet,i=1,2,…,n,n=0} 数据关系:R1={ai-1,ai|ai-1,ai∈D,ai-1ai,i=2,…,n} 基本操作: InitList(L) 操作结果:构造一个空的有序表L。 DestroyList(L) 初始条件:有序表L已存在 操作结果:销毁有序表L。 CreateList(L,n) 操作结果:构造一个含有n个元素的链表L。 ListLength(L) 初始条件:链表L已经存在。 操作结果:返回L中数据元素的个数。 GetElem(L,i,e) 初始条件:链表L已经存在。 操作结果:用e返回L中第i个元素的值。 Equal(c1,c2) 初始条件:链表L已经存在且不为空。 操作结果:判断链表L中两元素是否相等,若相等则返回true,否则返回false。 LocateElem(L,e,equal) 初始条件:链表L已经存在,Equal是数据元素的判定函数。 操作结果:返回L中第一个与e满足关系Equal的数据元素的位序。若这样的元素不存在,则返回值为0。 ListInsert(L,I,e) 初始条件:链表L已经存在,1=i=ListLength(L)+1. 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。 ListDelete(L,I,e) 初始条件:链表L已经存在且非空,1=i=ListLength(L)。 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。 ListTraverse(L,visit()) 初始条件:链表L已经存在。 操作结果:依次对L中每个数据元素调用函数visit()。一旦visit()失败,则操作失败。 Append(%L,e) 初始条件:有序表L已存在。 操作结果:在有序表L的末尾擦人元素e。 }ADT OrderedList 集合的抽象数据类型定义为: ADT Set{ 数据对象:D={ai|ai为小写英文字母且互不相同,i=1,2,…,n,0=n=26} 数据关系:R1={ } 基本操作: CreatSet(T,Str) 初始条件:Str为字符串 操作结果:生成一个由Str中小写字母构成的集合T。 DestroySet(T) 初始条件:集合T已存在 操作结果:销毁集合T的结构。 Union(T,S1,S2) 初始条件:集合S1和S2存在 操作结果:生成一个由S1和S2的并集构成的集合T。 Intersection(T,S1,S2) 初始条件:集合A和B已经存在。 操作结果:生成一个由A和B的交集构成的集合T。 Difference(T,A,B) 初始条件:集合A和B已经存在。 操作结果:生成一个由A和B的差集构成的集合T。 PrintSet(T) 初始条件:集合T已经存在。 操作结果:将集合T中的元素打印出来。 }ADT Set 详细设计 单链表的存储结构 typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; 链表的基本操作的实现 void InitList(LinkList L) { L=(LinkList)malloc(sizeof(LNode)); if(!L)exit(OVERFLOW); L-next=NULL; } void CreateList(LinkListL,int) { L=(

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档