一个经典的公式:
程序设计 = 数据结构 + 算法
数据结构的研究范围:
1. 非数值计算类型的程序问题
2. 数据间的组织和操作方式
3. 数据的逻辑结构与存储结构
研究数据结构的意义:
在于写出高质量的代码:
用尽量少的时间、尽量少的步骤、尽量少的内存解决问题
一些概念:
1. 数据:
1) 描述客观事物的符号
2) 计算机中的操作对象
3) 可以输入到计算机中
4) 能被计算机识别、处理
5) 是一个抽象的概念
2. 数据元素:组成数据的、有一定意义的基本单位
3. 数据项:不可分割的最小单位,若干个数据项组成数据元素
4. 数据对象:性质相同的数据元素的集合
5. 数据类型: 一个值的集合和定义在此集合上一组操作的总称,可分为
1) 原子类型:不可再分解的基本数据类型
2) 结构类型:可以再分解的,由若干类型组合而成
3) 抽象数据类型:一个数学模型以及定义在该模型上的一组操作
6. 数据结构:数据元素之间的关系
数据元素之间不是独立的,存在特定的关系,这些关系即是结构
实例:
struct Teacher //数据类型
{
char name[32]; //数据项
int age; //数据项
};
struct Teacher t; //数据元素
struct Teacher tArray[30]; //数据对象
t.age = 1; //数据项
数据结构的三方面内容:
1. 逻辑结构:数据对象中数据元素之间的逻辑关系(从逻辑上描述数据,与数据的存储无关,是独立于计算机的)其可分为
1) 集合结构:数据元素之间没有特别的关系,仅同属相同集合,类似数学中的集合
2) 线性结构:数据元素之间是一对一的关系
3) 树形结构:数据元素之间是一对多的层次关系
4) 图形结构:元素之间是多对多的关系
2. 物理结构(也叫存储结构):数据的逻辑结构在计算机中的存储形式(它依赖于计算机),其可分为:
顺序、链式、索引、散列(Hash表,通过键值对存储元素)
最常用的物理(存储)结构是:
1) 顺序存储结构:数据存储在地址连续的存储单元里
2) 链式存储结构:数据存储在任意的存储单元里,通过保存地址的方式找到相关联的数据元素
3. 数据的运算:对数据的操作和处理,常用的数据运算有5种:
插入、删除、修改、查找、排序
数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所釆用的物理(存储)结构