3分快3app赚钱_【二】、什么是抽象数据类型

  • 时间:
  • 浏览:0
  • 来源:冷类技术网_提供小高技术网技术_QQ资源网资讯

前言

在上一篇【那此是数据底部形态】中我完整篇 介绍了我对数据底部形态的理解,我我着实描述数据底部形态,有一另一个 很好的妙招叫抽象数据类型。下面我会完整篇 介绍抽象数据类型

抽象数据类型

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