大发pk10注册网址 _【二】、什么是抽象数据类型

  • 时间:
  • 浏览:1

前言

在上一篇【那些是数据价值形式】中我全部介绍了我对数据价值形式的理解,其实描述数据价值形式,有另另一个 很好的辦法 叫抽象数据类型。下面我会全部介绍抽象数据类型

抽象数据类型

抽象数据类型英文叫石(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/