绪论之数据结构讨论的范畴、基本概念

一、数据结构讨论的范畴
Niklaus Wirth提出:Alogortihm(算法)+Data Structures(数据结构) = Programs

1、程序设计:为计算机处理问题编制的一组指令集。
2、算法:处理问题的策略。
3、数据结构:问题的数学模型。

例如1:数值计算的程序设计问题
1)结构静力分析计算——线性代数方程组
2)全球天气预报——环流模式方程

例如2:非数值计算的程序设计问题
1)求一组(n个)整数中的最大值(整数的取值范围-32768~32767)
算法:比较两个数的大小
2)计算机对弈
算法:对弈的规则和策略
3)足协数据库管理
算法:需要管理的项目?如何管理?用户界面?

概括的说,数据结构描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机上的表现和实现。

二、数据结构的基本概念之数据与数据结构
1、数据:所有能被输入到计算机中,且被计算机处理的符号的集合。/计算机操作的对象总称。/是计算机处理信息的某种特定的符号表现形式。
2、数据元素:数据中的一个“个体”,数据结构中讨论的基本单位。

3、数据项:数据结构中讨论的最小的单位,数据元素是数据项的集合。
例如:运动员个人信息

姓名      俱乐部名称   出生日期        参加日期        位置
                      年 月 日 
数据项      数据项     组合项          数据项         数据项

4、数据结构:带结构的数据元素的集合。
例如1:一个含有12位的十进制数,可以用三个四位十进制数表示。
1234,5678,9012——>a1(1234),a2(5678),a3(9012)
在a1,a2,a3之间存在“次序”关系:<a1,a2>,<a2,a3>

例如2:2行3列2维数组{a1,a2,a3,a4,a5,a6}

行的次序关系:row={<a1,a2>,<a2,a3>,<a4,a5>,<a5,a6>}
列的次序关系:col={<a1,a4>,<a2,a5>,<a3,a6>}

例如3:一维数组{a1,a2,a3,a4,a5,a6}中存在次序关系{<ai,ai+1>|i=1,2,3,4,5,6}

5、数据的逻辑结构可归纳为一下四类:线性、树形、图状、集合
6、数据结构的形式定义为:数据结构是一个二元组,Date_Structures=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集。
7、数据的存储结构:就是逻辑结构在计算机中的映像(表现形式)。

8、数据元素的映像方法:用二进制位(bit)的位串表示数据元素,如:
(321)脚标10 = (501)脚标8 = (101000001)脚标2【脚标表示进制】
ASCI码中A = (101)脚标8 = (001000001)脚标2

9、关系的映像方法(表示<x,y>的方法):
1)顺序映像:以存储位置的相邻表示后继关系,如:
y的存储位置和x的存储位置之间差一个常量C,而C是一个隐含值,整个存储结构中只含元素本身的信息。
2)链式映像:以附加信息(指针)表示后继关系,如:
需要用一个和x在一起的附加信息指示y的存储位置。

10、在不同的编程环境中,存储结构可有不同的描述方法。当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。
例如:以三个带有次序关系的整数表示一个长整数时,可以利用C语言中提供的整数数组类型,定义长整数为:typedef int long_int[3]

三、数据结构的基本概念之数据类型
1、在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。
2、数据类型是一个值的集合和定义在此集合上的一组操作的总称。

四、数据机构的基本概念之抽象数据类型(Abstract Date Type简称ADT)
1、定义:是指一个数据模型以及定义在此数学模型上的一组操作。(这里所提的数学模型可以理解为数据结构)

2、ADT两个重要特征:
1)数据抽象:用ADT描述程序处理的实体时,强调的是其本质特征,其所能完成的功能以及它的外部用户的接口(即外部使用它的方法)。
例如:
抽象数据类型复数的定义:

ADT Complex{
    数据对象:
        D={e1,e2|e1,e2属于RealSet}
    数据关系:
        R1={<e1,e2>|e1是复数的实数部分,e2是复数的虚数部分}
    基本操作:
        InitComplex(&Z,v1,v2)
            操作结果:构造复数Z,其实部和虚部分别被赋予参数v1,v2的值
        DestoryComplex(&Z)
            操作结果:复数Z被销毁
        GetReal(Z,&RealPart)
            初始条件:复数已经存在
            操作结果:用realPart返回复数Z的实部值
        GetImay(Z,&ImayPart)
            初始条件:复数已经存在
            操作结果:用ImayPart返回复数Z的虚部值
        Add(z1,z2,&sum)
            初始条件:z1,z2是复数
            操作结果:用sum返回两个复数z1,z2的和值
}ADT Complex

2)数据封装:将实体的外部特征和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。

3、ADT的描述方法:
抽象数据类型可用(D,S,P)三元组表示,其中D是数据对象,S是D上的关系集,P是对D的基本操作集。

4、ADT的表示和实现:抽象数据类型需要通过固有的数据类型(高级编程语言中已实现的数据类型)来实现。

猜你喜欢

转载自blog.csdn.net/qq_34944851/article/details/62884021