理论教育 数据结构高分笔记:抽象数据类型与实例

数据结构高分笔记:抽象数据类型与实例

时间:2023-11-03 理论教育 版权反馈
【摘要】:前边讲到的栈和队列就是两个典型的抽象数据类型实例。一个抽象数据类型,可以看作一些数据对象以及附加在这些数据对象上的操作的集合。2)ADT大括号内用数据对象集、数据关系集和操作集分开,如上题的图书馆ADT设计。6)不同的数据对象类型,自上而下依次列出,如上题的书ADT。7)相同类型的数据对象,用集合表示法写出,一般考研中涉及的题目用集合的列举法表示即可,如上题的书架ADT中的书数据对象。

数据结构高分笔记:抽象数据类型与实例

前边讲到的栈和队列就是两个典型的抽象数据类型实例。一个抽象数据类型(AbstractDataType,ADT),可以看作一些数据对象以及附加在这些数据对象上的操作的集合。对于栈来说,数据对象集为存储在栈内的数据元素;操作集为元素进栈、元素出栈、判断栈是否为空等操作。对于队列来说,数据对象集为存储在队列内的数据元素;操作集为元素进队、元素出队、判断队是否为空等操作。栈的元素进出栈操作实现了FILO特性,队列的元素进出队操作实现了FIFO特性。因此,栈ADT可以描述为:插入和删除元素只能在一端进行的线性表;队列ADT可以描述为:插入元素只能在一端进行,而删除元素只能在另一端进行的线性表。

ADT重在对功能的描述而不关心具体实现。举例来说,对于栈的入栈操作,可能有多个版本的函数实现,在ADT的描述中,看不到这种具体实现上的区别,它们都是同一个入栈操作。

考研中涉及的ADT问题:

(1)关于ADT概念的理解

数据对象集,数据关系集和操作集。其中数据对象集和操作集前边已经讲过。数据关系集指的是数据对象的组织方式,如线性表的一对一、树的一对多以及图的多对多关系。

(2)关于ADT的应用

若出现则多数是一些设计题,对于简单的ADT可以用简单的语言描述,如上述栈和队列ADT;较为复杂的最好用类结构体方法描述,下边通过一个例题来说明。

例3-6】 设计一个图书馆ADT。

分析:

此类题属于开放性题目,没有统一的答案,尽可能完备地描述图书馆的功能即可。

数据集描述:

图书馆要有自己的名字以及一些放书的书架;书架一般没有名字而是有自己的编号,以及若干书;书要有自己的书名、作者名和编号等信息。

操作集描述:(www.daowen.com)

根据书架号查找书架、根据书号查找书、根据书名查找书、根据作者名查找书;以及添加书、删除书、借书、还书操作。

由此可以设计出以下图书馆ADT:

设计ADT的题目要注意以下几点:

1)注意ADT的结构格式,类似于C语言的结构体的写法,如上题的书ADT设计。

2)ADT大括号内用数据对象集、数据关系集和操作集分开,如上题的图书馆ADT设计。

3)考研中出现的题目,一般必有数据对象集。

4)如果数据对象之间有很强的关联性,则应写出合适的数据关系集,如上题书架ADT中,书按照顺序结构关系排列。如果遇到树形结构或图结构的数据关系,则用类似的边集表示方法写出。考研中最可能出现的四种关系:没关系、顺序关系、树形关系和图关系。

5)若有操作集,则写出。

6)不同的数据对象类型,自上而下依次列出,如上题的书ADT。

7)相同类型的数据对象,用集合表示法写出,一般考研中涉及的题目用集合的列举法表示即可,如上题的书架ADT中的书数据对象。

8)不同的操作自上而下依次列出。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈