文章目录
考点提要
- 数组与矩阵
- 线性表
- 广义表
- 树与二叉树
- 图
- 排序与查找
- 时间复杂度与空间复杂度
- 算法基础及常见的算法
一、数组
数组类型 | 存储地址计算 |
---|---|
一维数组a[n] | a[i]的存储地址为:a+i*len |
二维数组a[m][n] (从0开始) | a[i][j]的存储地址(按行存储)为:a + (i*n+j)*len a[i][j]的存储地址(按列存储)为:a+(j * m+i)*len |
二、稀疏矩阵
- 上三角矩阵
- 下三角矩阵
考试的时候,使用代入的方式进行求解
三、线性表
- 顺序表
- 链表
- 单链表
- 循环链表
- 双向链表
- 链表的基本操作
- 单链表删除结点
- 单链表插入结点
- 双向链表删除结点
- 双向链表插入结点
- 顺序存储与链式存储对比
- 空间性能:顺序表的存储比链式表好
- 时间性能:顺序表的读运算优于链式表;查找、插入、删除,链表性能更好
- 队列与栈
- 队列:先进先出
- 栈:先进后出
- 循环队列:队空条件:head = tail;队满条件:(tail + 1) % maxsize = head
四、广义表
- 概念:线性表的推广,是由0个或多个单元素或子表所组成的有限序列。
- 记作:LS = (α1, α2, … , αn)
α既可以是单个元素,也可以是广义表,分别称为原子和子表。 - 深度与长度
- 深度:广义表展开后所含的括号的最大层数。
- 长度:广义表中元素的个数。
- eg:LS1 = (a, (b, c), (d, e)),其长度为3,深度为2.
- 基本操作
- 取表头head(LS)。非空广义表LS的第一个元素称为表头。它可以是一个单元素,也可以是一个子表。
- 取表尾tail(LS)。在非空广义表中,除表头元素之外,由其余元素所构成的表称为表尾。非空广义表的表尾必定是一个表。
- eg:LS1 = (a, (b, c), (d, e)),取出元素b的操作?
head(head