数据结构在计算机的映像,映像和数据类型是计算机的逻辑结构还是编程语言范畴?...

在前述文章中我们提到了,我们研究数据结构的目的是为了在计算机中实现对他的操作,因此我们要研究如何在计算机中表示这种逻辑结构。那么今天的文章中,重点介绍一下数据的存储结构——逻辑结构在存储器中的映像。

11d1c8cb4b092f7380bc91ee864838c0.png

数据元素的映像

数据元素的映像方法:用二进制位(bit)的位串表示数据元素

(321)10 =(501)8=(101000001)2

A=(101)8=(001000001)2;

关系映像的方法:(表示的方法)

顺序映像:以相对的存储位置表示后继关系,例如令y的存储位置和x的存储位置之间,差一个常量C,而C是一个隐含值,整个存储结构中,只含数据元素本身的信息。

0bae246005ab4efc192f58a0a524de39.png顺序映像

链式映像:以附加信息(指针)表示后继关系。需要用一个和x在一起的附加信息指示y的存储位置

93c7e3ca467d1a9e518cdb733521e8fa.png链式映像

我们可以用高级语言中的数据结构来描述;亦可以用一维数组来描述顺序存储结构,用指针来描述链式存储结构。那么通过对上述方法的介绍和理解,我们总结一下,如何来描述存储结构:

数据类型

在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。不同类型的变量,其所能取的值的范围不同,所能进行的操作不同。

数据类型是一个值的集合和定义在此集合上的一组操作的总称。

抽象数据类型(Abstract Data Type,ADT):

ADT是指一个数学模型以及定义在此数学模型上的一组操作。实际上是指数据结构及其操作的集合,要用抽象数据类型描述数据结构。

抽象数据类型的描述方法

抽象数据类型可以有(D,S,P)三元组表示。其中D是数据对象,S是D上的关系集,P是对D的基本操作集。

ADT抽象数据类型名{

数据对象:

数据关系:

基本操作:

}ADT抽象数据类型名

其中基本操作的定义格式为:

基本操作名(参数表)

初始条件:

操作结果:

我们对上述格式中出现的名词进行一下释义:

-赋值参数 只为操作提供输入值。

-引用参数 以&打头,除可提供输入值外,还将返回操作结果。

-初始条件 描述了操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。

-操作结果 说明了操作正常完成之后,数据结构的变化状况和应返回的结果。若初始条件为空,则省略之。

例:抽象数据类型复数的定义(注意大括号“{}”的位置)

ADT Complex{

数据对象:

D={e1,e2|e1,e2∈RealSet }

数据关系:

R1={ | e1是复数的实数部分| e2 是复数的虚数部分 }

基本操作:

AssignComplex( &Z, v1, v2 )

操作结果:构造复数 Z,其实部和虚部分别被赋以参数 v1 和 v2 的值

DestroyComplex( &Z)

操作结果:复数Z被销毁

GetReal( Z, &realPart )

初始条件:复数已存在

操作结果:用realPart返回复数Z的实部值

GetImag( Z, &ImagPart )

初始条件:复数已存在

操作结果:用ImagPart返回复数Z的虚部值

Add( z1,z2, &sum )

初始条件:z1,z2是复数

操作结果:用sum返回两个复数z1, z2 的和值。

}ADTComplex

抽象数据类型的表示和实现

抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。

今天的文章主要介绍了数据的存储结构:映像(顺序映像、链式映像)以及抽象数据类型。也就是说前面所说的无论是数据、数据类型还是数据的存储结构,总的来说,就是与数据相关的知识点。那么有了数据,我们如何把这些数据放在一起去解决某类问题呢?这就用到了算法:算法是为了解决某类问题而规定的一个有限长的操作序列。关于算法的详细内容将在下一篇文章中介绍。

知识无限,小编在文章编辑过程中难免出现不尽人意的地方,欢迎大家批评指正,小编也将不断积累完善自己,让我们共同进步。

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值