-
把现实世界中的问题信息化
用代码描述现实问题
-
高效地处理这些信息-> 创造价值
408四门课关系

数据结构的基本概念

数据
-
数据是信息的载体
-
是描述客观事物、字符以及所有能够输入到计算机中并被计算机识别和处理的符号的集合。
-
数据是计算机程序加工的原料
数据元素、数据项
数据元素是数据的基本单位,一个数据元素由若干数据项组成,数据项是构成数据元素不可分割的最小单位。
通常数据元素作为一个整体考虑和处理。
另外还有组合项的概念:若干数据项适合放到一块,比如:年月日
数据结构、数据对象
数据结构:相互之间存在一种或多种特定关系的数据元素的集合(包括数据元素和它们之间的关系)
数据对象:具有相同性质的数据元素的集合,是数据的一个子集

数据结构的三要素

逻辑结构

集合:各个元素属于同一个集合,每个其他的关系
线性结构:数据元素之间是一对一的关系;除了第一个元素,所有元素都有唯一前驱,除了最后一个元素,所有元素都有唯一后驱。
树形结构:数据元素之间是一对多的关系
图形结构:数据元素之间是多对多的关系
物理结构
顺序存储:逻辑上相邻的元素,存储在物理位置也相邻的存储单元中
链式存储:逻辑上相邻的元素,借助指示元素存储位置的指针来表示元素之间的逻辑关系
索引存储:存储元素信息的同时,建立附加的索引表;索引表中的每一项称为索引项(关键字、地址,其中关键字用来区分不同的数据元素)

散列存储:根据元素的关键字直接计算出该元素的存储地址,又称为哈希(hash)存储
顺序结构:顺序存储
非顺序结构:链式存储、索引存储、散列存储
关于两种分类必须理解的部分:
-
如果采取顺序存储,则各个数据元素在物理上必须是连续的;如果采用非顺序存储,各个数据元素在物理上可以是分散的
-
数据的存储结构会影响存储空间分配的方便程度(非顺序存储会对数据空间的分配更加方便)
-
数据的存储结构会影响数据运算的速度(顺序存储更方便查找)
数据的运算
施加在数据上的运算包括:运算的定义和实现
运算的定义是针对逻辑结构的,我们希望逻辑结构执行什么操作、什么功能
运算的实现是针对存储结构的,指出运算的具体操作步骤;
比如队列,我希望它有出队,入队这样的操作;存储结构不同,实现也不同,顺序存储,直接往后排就好了,链式存储需要指针指向下一个数据
数据类型、抽象数据类型
数据类型是一个值的集合 和 定义在此集合上的一组操作的总称
-
原子类型:其值不可再分的数据类型;
-
结构类型:其值可以在分解为若干成分(分量)的数据类型
抽象数据类型(abstract data type,ADT):是抽象数据组织 及与之相关的操作
ADT,用数学化的语言定义数据的逻辑结构,定义运算,但是和具体的实现无关。
也就是说数据的三要素,ADT,只占了一个半(逻辑结构、定义运算),关于物理结构(或者说存储结构)的它都没干
算法的基本概念
什么是算法
程序 = 数据结构 + 算法
先把现实中的问题用数据结构表示,然后设计算法去处理这些信息
算法的特性
-
有穷:有穷的步骤;有穷的时间
算法是有穷的,但是程序的执行时间可以是无穷的
-
确定性:相同的输入,只能得出相同的输出,每条指令必须有确切的含义
-
可行性:算法中的描述都可以通过已经实现的基本运算执行有限次来实现
-
输入:一个算法可以有零个或者多个输入
-
输出:一个算法可以有一个或者多个输出
好的算法的特质
-
正确性
-
可读性
-
健壮性:输入非法数据时,算法能够做出适当的反应或者进行处理,而不会产生莫名其妙的结果
-
高效率和低存储量

浙公网安备 33010602011771号