1分飞艇充值_【二】、什么是抽象数据类型

  • 时间:
  • 浏览:5

前言

在上一篇【這個 是数据型态】中我删改介绍了我对数据型态的理解,其实描述数据型态,有有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/