1.5分快3网页版_【二】、什么是抽象数据类型

  • 时间:
  • 浏览:1

前言

在上一篇【有哪些是数据价值形式】中我完全介绍了我对数据价值形式的理解,我我觉得描述数据价值形式,有另有有1个很好的方法叫抽象数据类型。下面我会完全介绍抽象数据类型

抽象数据类型

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

数据类型,它带有了另有有1个东西,另有有1个是“数据对象集”,要是 大伙说的“是有哪些东西”,第五个是“数据集合相关联的操作集”,就上我在上一篇中说的,大伙还可否 单纯讲为什么会去补救图书,大伙是要对有有哪些图书进行操作的,这两件事情:图书的摆放,对图书的操作,是紧密结合在同時 的。这另有有1个东西在C语言里是独立补救的,要是 在某些面向对象的语言中间,比如C++、Java,你就会发现,它们很好的为数据类型专门设计了两种机制,要是 另有有1个“”,把你这名数据集跟它相关的操作集封塞进另有有1个类中间。

那再说有哪些是抽象呢?

抽象,抽象的意思要是 “不具体”,要是 说,描述数据类型的方法是不依赖于具体的实现的,对另有有1个数据类型的描述,它跟

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

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

首先大伙要给你这名抽象数据类型另有有1个名称叫“矩阵”,要是 大伙要描述一下它的数据对象集,另有有1个NM的矩阵,是由NM个矩阵的元素构成的,大伙把你这名元素描述成另有有1个三元组a,i,j,其中a是你这名矩阵元素的值,同時 大伙还还可否 知道你这名矩阵元素在矩阵中间所处的位置,要是 它的行号i和列号j,就如果描述了另有有1个数据的对象集,相关联的操作集有要是有要是有(如下图)



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

此篇完

到这抽象数据类型要是 完了,我我觉得你这名篇要是 对数据价值形式的另两种描述,我还可否 想看 这语句大伙们应该对数据价值形式有个清晰的认识了吧。提前做个预告,下篇就始于了了了说算法了,跟如果 一样,我会清清楚楚描述,明明白白表达,我相信我的认真配得上您的关注。

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