- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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=(
您可能关注的文档
- 室内污染控制与洁净技术课件 2章(空气污染源控制技术).ppt
- 室外工程合同范本.doc
- 收发图纸管理办法.doc
- 收购协议 编号.doc
- 手机电池修复三种方法.doc
- 手机搜狐网与杂志媒体合作方案.doc
- 手机新媒体-IFENG凤凰移动台.ppt
- 寿力825VH&750VH零部件目录.doc
- 寿险核保核赔实训指导书.doc
- 授信额度及应收帐款管理办法.doc
- DB12 046.89-2011 产品单位产量综合电耗计算方法及限额 第89部分:手机 .docx
- DB12 046.88-2011 产品单位产量综合电耗计算方法及限额 第88部分:晶振 .docx
- DB12T 419-2010 无公害农产品 核桃栽培管理技术规范 .docx
- DB12T 417-2010 沙化和荒漠化监测技术规程.docx
- DB12T 449-2011 民用建筑四防门通用技术条件.docx
- DB12 046.100-2011 产品单位产量综合能耗计算方法及限额 第100部分: 果汁饮料 .docx
- DB12T 427-2010 葱姜蒜中205种农药多残留测定方法-GCMS法.docx
- DB12T 421-2010 有机农产品 甘薯有机栽培技术规范.docx
- DB12T 426-2010 蔬菜水果中205种农药多残留测定方法-GCMS法 .docx
- 《老年人身体康复》精品课件——项目6 中国传统康复技术.pptx
文档评论(0)