南邮数据结构1-11章重点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构
第一章
1. 4种基本的逻辑结构:(注意特征,考选择填空题)P2
2. 两种基本的存储结构:顺序存储结构和链接存储结构
3. 时间复杂度:程序运行从开始到结束所需要的时间
4. 算法的空间复杂度:是程序运行从开始到结束所需的存储量。
5. 渐进时间复杂度:使用大O记号表示的算法的时间复杂度
O(1) 6 . 最好、最坏和平均情况时间复杂度P13 相关习题:P14 1-18题 第二章 1 一维数组:设给长度为n的一维数组a所分配的存储块的起始地址是Loc(a[0]),若已知a 的每个元素占k个存储单元,则下标为i的数组元素a[i]的存放地址Loc(a[i])是 Loc(a[i])= Loc(a[0])+i*k 0≤i<n 2 二维数组:行优先顺序的地址计算: 若已知每个数组元素占k个存储单元,第一个数组元素a[0][0]的存储地址是loc(a[0][0]),则数组元素a[i][j]的存储地址loc(a[i][j])为 loc(a[i][j])=loc(a[0][0])+(i*n+j)*k (0 i 列优先顺序存储: loc(a[i][j])=loc(a[0][0])+(j*m+i)*k (0 i 3 单链表的插入与删除(指针的修改)P27 A. 将q 插入P 之后: q->link=p->link , p->link=q B. 删除p : q->link=p->link , free(p) 4 循环链表 单循环链表是将单链表尾结点的指针域置为第一个结点的地址,而不再是NULL ,这样从表中任一结点出发,均可访问到表中所有结点。q->link=first 第三章 1 堆栈:先进后出,允许插入和删除元素的一端称为栈顶,另一端称为栈底。 2 队列:先进先出,队尾是允许插入元素的一端,队头是允许删除元素的另一端。 相关习题 P55 习题3-1、习题3-14 第四章 1顺序表的插入: 长度为n ,则在位置i (i=0,…, n )处插入一个元素要移动 n-i 个元素。 平均情况下,在表中插入元素需要移动元素的个数为 渐近时间复杂度:O(n) 2 顺序表的删除:长度为n ,删除位置i 处的元素需要移动n -i -1个元素(0≤i <n )。 01()1 2n i i n E n i n ==-= +∑ 平均情况下,在顺序表中删除一个元素需要移动元素的个数为 渐进时间复杂度均为O(n)。 3 程序填空题 P60 程序4-1 P63 程序4-3 P64 程序4-4 4 三元组按行顺序存储 P74 (能够写出行、列三元组表) 注:采用二分搜索法查找一个元素的时间复杂度为O (lbn ) 采用顺序查找算法的平均时间复杂度为O(n) 5 快速转置算法 A 。Num[i]存放矩阵M 第i 列的非零元素的个数 B 。k[i]用下列递推公式计算 k[0]=0 k[i]=k[i-1]+num[i-1] (1≤i ≤n) 对上图(a )计算得到如下num 和k 的值如下: 相关练习:P87 4-13 P87 4-14 ∑∑-==-=-=--=10121 )(1)1(1n i n i D n i n n i n n A 第六章 1 树的基本概念 2 二叉树的基本形态 例题 对于三个结点A,B 和C,可分别组成多少不同的无序树、有序树和二叉树? 答:(1)无序树:9 棵(2)有序树:12 棵(3)二叉树:30 棵 3 二叉树的性质(熟记) 性质1 二叉树的第i(i 1)层上至多有2i-1 个结点。 性质2 高度为h的二叉树上至多有2h–1个结点。 性质3 包含n个元素的二叉树的高度至少为log2(n+1)。 性质4 任意一棵二叉树中,若叶结点的个数为n0,度为2的结点的个数为n2,则有n0=n2+1。性质5 具有n个结点的完全二叉树的高度为log2(n+1)。 定义1 高度为h的二叉树恰好有2h–1个结点时称为满二叉树。 定义2 一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。 4 二叉树的遍历P112 图6-12 先序:根左右 中序:左根右 后序:左右根 二叉树遍历算法基本操作是访问结点,不论按何种次序遍历,对含有n个结点的二叉树,其时间复杂度均为O(n)。 5 编程题 求二叉树的高度P118 程序6-8 6 森林与二叉树的转化 树(Tree)转换为二叉树(BTree)算法 树可以唯一地表示成一棵二叉树: ⑴将树中的兄弟用线连接; ⑵对各结点,保留最左孩子的连线,去掉其余孩子的连线; ⑶调整为习惯的二叉树形(水平右斜,垂直左斜)。 例图如下 森林(Forest)转换成二叉树(BTree) 可以将任何森林唯一地表示成一棵二叉树。 方法如下: (1)若F为空,则B为空二叉树 (2)若F非空,则B的根是F中第一棵子树T1的根R1,B的左子树是R1的子树森林(T11,T12,…,T1m),B的右子树是森林(T2,…,Tn)所对应的二叉树. 最后所形成的二叉树就是森林所对应的二叉树。 例图如下