数据结构主要研究的问题:如何合理地组织数据,高效地处理数据。
计算机用于数据计算时,一般要经过如下几个步骤:
- 从具体问题中抽象出数学模型。
- 设计一个用于此数学模型的算法。
- 编写程序。
- 进行测试,调试直到解决问题。
数据:是客观事物的符号表示,是所有能输入计算机中并被计算机程序处理的符号的总称。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
数据结构包括逻辑结构和存储结构两个层次。
逻辑结构
数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。数据的逻辑结构可以看作从具体问题中抽象出来的数学模型。
数据的逻辑结构有两个要义:数据元素和关系。关系是指数据元素间的逻辑关系。数据元素是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
数据的逻辑结构通常有四类基本逻辑结构如下:
- 集合结构:数据元素之间除了“属于同一集合”的关系外,别无其它关系。
- 线性结构:数据元素之间存在一对一的关系。
- 树结构:数据元素之间存在一对多的关系。
- 图结构(网状结构):数据元素之间存在多对多的关系。
线性结构包括:线性表、栈和队列、字符串、数组、广义表。
非线性结构包括:树结构,二叉树,图结构、无向图、集合结构。
存储结构
数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。数据元素在计算机中有两种基本的存储结构:顺序存储结构和链式存储结构。
顺序存储结构要求所有的元素依次存放在一片连续的存储空间中;链式存储结构无须占用一整块存储空间,但为了表示节点之间的关系,需要给每个节点附加指针字段,用于存放后继元素的存储地址。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据结构:一般指用户定义的表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三个部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
抽象数据类型的定义格式如下:
ADT 抽象数据类型名{
数据对象:(数据对象的定义)
数据关系:(数据关系的定义)
基本操作:(基本操作的定义)
}ADT 抽象数据类型名
其中,数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:
基本操作名(参数表)
初始条件:(初始条件描述)
操作结果:(操作结果描述)
数据结构与算法之间存在着本质联系。在涉及某一类型数据结构时,总要涉及其上施加的运算。而只有通过对所定义运算的研究才能清楚理解数据结构的定义和作用。
算法是为了解决某类问题而规定的一个有限长的操作序列。
算法的五个重要特征:
- 有穷性
- 确定性
- 可行性
- 有输入
- 有输出
评估算法的基本标准:
- 正确性
- 可读性
- 健壮性
- 高效性