考研数据结构
第一章
绪论
数据
信息的载体,是描述客观事物属性的数、字符及所有 能输入到计算机中并被计算机程序识别 和处理的符号集合。数据是计算机程序加工的原料。
数据元素、数据项:
数据元素是数据的基本单位,通常作为一个整体
一个数据元素可以包含多个数据项
eg:
一个顾客就是一个数据元素,属于特定顾客的号数、取号时间、就餐人数等都为数据对象
数据结构、数据对象:
- 数据结构:相互间存在一种或者多种特定关系的数据元素集合
- 数据对象:是具有 相同性质的元素集合,是数据的子集
数据结构三要素:
逻辑结构:
- 集合
- 树形结构
- 图结构
- 线性结构
物理结构(存储结构):
- 顺序结构
- 链式存储
- 索引存储(拥有索引表)
- 散列存储(第六章)
数据的运算:
- 运算的定义:是针对逻辑结构的,指出运算功能
- 运算的实现:是针对物理结构的,即指出运算的具体操作步骤
数据类型、抽象数据类型:
数据类型:是一个值的集合与定义哎这个集合上的一组操作的总称
- 原子类型:其值不可再分的数据类型 eg:int
- 结构类型:其值可以再分解为若干成分的数据类型 eg:struct
抽象数据类型(ADT):是抽象数据组织及与之相关的操作,主要考虑数据的逻辑结构与数据运算,用数学化的语言定义数据的逻辑结构、定义运算,与具体事实无关
算法
(程序 = 数据结构 + 算法)
算法的五特性是必要条件不是算法的定义
算法的时间复杂度
加法规则:
T(n) =T1(n) + T2(n) = O(f(n) + O(g(n))) = O(max(f(n),g(n)))
乘法规则:
T(n) = T1(n) * T2(n) = O(f(n) * g(n))
时间复杂度排序:
算法空间复杂度
第二章
线性表
定义
线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,n = 0是线性表是一个空表。
L = (a1,a2,…,ai,ai+1,…,an)
ai是线性表中的“第几个”元素线性表中的 位序(位序是从1开始的)
a1是表头元素:an是 表尾元素
除了第一个元素外,每个元素有且只有一个 直接前驱:除最后一个元素外,每个元素有且仅有一个直接后继。
线性表的基本操作
顺序存储
-
静态存储:
#define MaxSize 10 typedef strct { ElemType data[MaxSize]; int length; }Sqlist
-
动态分配
#define MaxSize 10 typedef strct { ElemType *data; int MaxSize;//顺序表的最大容量 int length; }Sqlist
(malloc、free函数分别动态申请和释放内存空间)
eg:L.date = (ElemType *)mallo