算法与数据结构-1.绪论
1.1基本概念和术语
- 数据:客观事物的符号表示。
- 数据元素(元素/记录/结点):数据的基本单位。
- 数据项:组成数据元素的、有独立含义的、不可分割的最小单位/域。
- 数据对象:性质相同的数据元素的集合,是数据的一个子集。
- 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:从逻辑关系上描述数据,和数据的存储无关,是独立于计算机的。有两个要素:数据元素和关系。
1.集合结构:除了属于同一集合外,无其他关系。
2.线性结构:一对一关系。
3.树结构:一对多关系。
4.图结构/网状结构:多对多关系。可分为:
- 线性结构:线性表、栈、队列、字符串、数组、广义。
- 非线性结构:树、二叉树、有向图、无向图
存储结构:也称为物理结构。指数据对象在计算机中的存储表示。把数据对象存储到计算机时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系。数据元素在计算机内用一个结点来表示。
- 顺序存储结构:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。要求所有的元素依次存放在一片连续的存储空间中。通常借助数组类型来描述。
- 链式存储结构:借助指针类型来描述。
- 数据类型:一个值的集合和定义在这个值集上的一组操作的总称。
- 抽象数据类型:一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。包括数据对象、数据对象上关系的集合、对数据对象的基本操作的集合。如下。
tpedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*LinkList;
1.2 算法和算法分析
1.2.1 算法的特性
- 有穷性
- 确定性
- 可行性
- 输入:一个算法有零个或多个输入。
- 输出:一个算法至少有一个输出。
1.2.2 评价算法优劣的基本标准
- 正确性
- 可读性:便于人们理解与交流。
- 健壮性
- 高效性:包括时间和空间两个方面。时间高效是指算法设计合理、