含交、并和差的集合类型
由于集合的操作仅限于求并、交、差,因此在这个示例中仍以有序表表示集合,但进一
步将集合本身设计成抽象数据类型,以便以后可以在集合类型的操作基础上,构造高一层
次的算法,以便完成更复杂的应用。
一、 问题描述
1. 题目内容:利用有序链表表示正整数集合,实现集合的交、并和差运算。
2. 基本要求:由用户输入两组整数分别作为两个集合的元素,由程序计算它们的交、并
和差集,并将运算结果输出。
3. 测试数据:S1={3,5,6,9,12,27,35}
S2={5,8,10,12,27,31,42,51}
运 行 结 果 应 为 : S1
S2={3,5,6,8,9,10,12,27,31,35,42,51}
S1 S2={5,12,27}
S1 - S2={3,6,9,35}
二、 需求分析
1. 本程序用以求出任意两个正整数集合的交、并和差集。
2. 程序运行后显示提示信息,由用户输入两组整数。程序将自动滤去输入的重复整数及
负数。
3. 用户输入数据完毕,程序将输出运算结果。
4. 测试数据应为两组正整数,范围最好在 0~35000 之间。
三、 概要设计
为实现上述程序功能,应以有序链表表示集合。为此需要有序表和集合两个抽象数据
类型。
1. 有序表的抽象数据类型定义为:
ADT OrderedList {
数据对象:D={ a
i
│
a
i
∈ElemType,i=1,2,…,n,n≧0}
数据关系:R1={<a
i-1
,
a
i
> │ a
i-1
,a
i
∈D,a
i-1
< a
i
,
i=2,…,n}
基本操作:
InitList(&L)
操作结果:构造一个空的有序表 L。
DestroyList(&L)
初始条件:有序表 L 已存在。
操作结果:销毁有序表 L。
ListEmpty(L)
初始条件:有序表 L 已存在。
操作结果:若 L 为空表,则返回 TRUE,否则返回 FALSE。
ListLength(L)
初始条件:有序表 L 已存在。
操作结果:返回 L 中数据元素个数。
GetElem(L,i)
初始条件:有序表 L 已存在,并且 1 ≦ i ≦ ListLength(L)。
操作结果:返回 L 中第 i 个数据元素。
LocatePos(L,e)
评论1
最新资源