【问题标题】:Data structures - Abstract data type (ADT) VS Concrete data type (CDT)数据结构 - 抽象数据类型 (ADT) VS 具体数据类型 (CDT)
【发布时间】:2017-12-02 21:11:31
【问题描述】:
所以在研究数据结构时我想出了一个问题。
CDT 是成熟的 ADT,即 ADT 的实现。
因此 .h 文件实际上是一个 ADT(仅用于操作,不讨论它们将如何执行)。
但是通过在旁边显示 .cpp 文件,即实现文件。
我们能否得出结论,我们使用具体的数据结构(即数组或链表)制作了堆栈的具体数据类型?
是这样吗?如果我错了,请纠正我。
【问题讨论】:
标签:
c++
data-structures
stack
abstract-data-type
【解决方案1】:
数组、列表和树是具体的数据类型。它们是通常由计算机语言提供的基本数据结构。
堆栈、队列和堆是抽象数据类型。它们只是想法,即具有定义行为的“黑匣子”。要实现它们,您必须选择合适的具体数据类型。
特别是,堆栈和队列可以通过数组或链表来实现。
堆可以用数组实现,也可以用二叉树实现
【解决方案2】:
嗯,不完全是,至少在这些术语的传统用法中。
抽象数据类型是一个mathematical model of a type,基于状态和可用操作的声明。
我想你可能会想到一个抽象的类,它是一个没有完全实现的类,因此必须对其进行细化以形成一个具体的类。
.h 文件指定类提供的接口。但是,考虑到内联等,它不太适合抽象/具体的区别:您可以拥有一个完全实现具体类的.h 文件。