1. 第一章 绪论
算法 + 数据结构 = 程序设计
数据结构: 相互间存在一种或多种特定关系的数据元素的集合
数据: 客观事物的符号表示
数据元素: 数据的基本单位
数据对象: 性质相同的数据元素的集合
基本结构:集合(相互无关),线性,树形,图状或网状(交叉)
抽象数据类型(ADT) : (D, S, P) -> 数据 +结构+操作
算法特性: 有穷性,确定性,可行性,有输入(0个或多个),有输出(1个或多个)
算法要求: 正确, 可读, 健壮, 效率与低存储需求
时间复杂度: T(n) = O(f(n)) 最坏情况下的最基本操作的与规模n的关系f(n)
空间复杂度: S(n) = O(f(n)) 最坏情况下辅助变量空间与规模n的关系f(n),若无关,则为 原地工作
语句的频度: 表示该语句的执行次数
1. 第二章 线性表
结构特点: 唯一的”第一“; 唯一的”最后“;除第一,都有且仅有一个前驱;除最后,都有且仅有一个后继
基本操作:初始化,清空,取值,插入,删除...
类型实现:
1. 顺序映像(连续存储单元依次存放) 顺序表
LOC(a (i + 1)) = LOC(a(i)) + C (C:常量,LOC(a(i)): 基地址,起始地址)
获取元素简单,插入删除要移动后续所有位置,插入受长度限制
2. 链式映像 (元素+ 后继指针 = 结点) 链表
头结点(元素无意义,指针指向第一个)
插入删除简单,获取复杂
链表扩展: 头指针,尾指针, 当前指针,长度
静态链表:(一维数组表示, 元素 + 相对位置)
循环链表: 尾指针 指向头指针
双向链表: p -> next -> prior = p -> prior -> next = p
一元多项式表示:((p1, e1),(p2, e2),...(pm,em)), 结点存储系数pi和指数ei的链表