1分彩最新版_【二】、什么是抽象数据类型

  • 时间:
  • 浏览:0

前言

在上一篇【什么是数据底部形态】中我详细介绍了我对数据底部形态的理解,虽然描述数据底部形态,有三个小 很好的土依据叫抽象数据类型。下面我会详细介绍抽象数据类型

抽象数据类型

抽象数据类型英文又名(Abstract Data Type),这里有三个小 关键词,三个小 叫“数据类型”,三个小 叫“抽象”,它们分别是什么意思呢?首先说什么是数据类型呢?

数据类型,它蕴藏了三个小 东西,三个小 是“数据对象集”,可是我 我们我们 说的“是什么东西”,第三个小是“数据集合相关联的操作集”,就上我在上一篇中说的,我们我们 非要单纯讲为什在么在去出理 图书,我们我们 是要对什么图书进行操作的,这两件事情:图书的摆放,对图书的操作,是紧密结合在并肩的。这名 个 东西在C语言里是独立出理 的,否则在否则 面向对象的语言上边,比如C++、Java,你就会发现,它们很好的为数据类型专门设计了有两种机制,可是我 三个小 “”,把这名 数据集跟它相关的操作集封塞进三个小 类上边。

那再说什么是抽象呢?

抽象,抽象的意思可是我 “不具体”,可是我 说,描述数据类型的土依据是不依赖于具体的实现的,对三个小 数据类型的描述,它跟

  • 存放数据的机器无关
  • 跟数据存储的物理底部形态无关
  • 实现操作的算法和编程语言皆无关

总体来说,我们我们 只描述数据对象集和相关的操作集"是什么",我们我们 不关心“它是为什在么在做到的”这名 问題。将会到现在否则 这样 基础的我们我们 看起来还是很抽象,没关系,我再举个例子,将会帮助你更好的理解抽象数据类型到底是个什么东西,这名 例子是关于“矩阵”的抽象数据类型的定义。

首先我们我们 要给这名 抽象数据类型三个小 名称叫“矩阵”,否则我们我们 要描述一下它的数据对象集,三个小 NM的矩阵,是由NM个矩阵的元素构成的,我们我们 把这名 元素描述成三个小 三元组a,i,j,其中a是这名 矩阵元素的值,并肩我们我们 还还要知道这名 矩阵元素在矩阵上边存在的位置,可是我 它的行号i和列号j,就另三个小 描述了三个小 数据的对象集,相关联的操作集有所以所以(如下图)



我们我们 来看一下,为什在么在这名 就叫做“抽象”的表示呢?首先我们我们 来看,在描述数据对象集的事先,说a是矩阵元素的值,那这名 值是float?还是double?还是int?我们我们 在这名 抽象数据类型中描述是不关心的,相应地,当还要对它的元素值进行操作的事先,我们我们 返回的也是ElementType,是三个小 通用的元素类型,我在实现这名 矩阵相关的所有函数的事先,我在头上写三个小 define,你还要什么,你可不能否把它define(定义)成什么样子,另三个小 一句话,你实现的什么函数是跟“你那个矩阵元素到底是哪种类型”是这样 关系的,哪种类型全是可不能否运算的。这就出理 了你对int实现了一遍,下一次矩阵变成double类型的,结果你又对double……难道重新写一遍吗?当然我说我还要直接用三个小 replace(替换),我把所有的int替加进去double,呃……这名 我还要注意,否则 地方的int真的可是我 int,你非要加进去double,所以将会会出错,总的来说呢,可是我 将会你我个人三个小 三个小 地去替换这名 元素的类型一句话,会很麻烦,而抽象一下可是我 有这名 好处,这是三个小 好处。另外三个小 呢,像这名 矩阵,我们我们 可是我 说这是三个小 M*N的矩阵,至于在多多系统进程 上边它是如保三个小 存法?我们我们 是用二维数组去存它?还是一维数组?还是用链表?这名 我们我们 在抽象数据类型定义的事先,全是不关心的。我不管它是为什在么在实现的,你可不能否是说:我还要实现的是三个小 矩阵。再比如说上边图片中的Add()函数,将会它们可不能否相加一句话,我还要返回它们的和,另三个小 可没说,在我算这名 矩阵加法的事先,到底是先按行加呢?还是先按列加呢?我到底是用什么语言去实现这名 函数呢?所以不管,这可是我 所谓的抽象。

此篇完

到这抽象数据类型可是我 完了,虽然这名 篇可是我 对数据底部形态的另有两种描述,我还要看过这名 句话我们我们 们应该对数据底部形态有个清晰的认识了吧。提前做个预告,下篇就开始英文英文说算法了,跟事先一样,我会清清楚楚描述,明明白白表达,我相信我的认真配得上您的关注。

 【原创声明】:我个人原创:https://www.cnblogs.com/zyx110/