数据结构复习笔记(西南交通大学2020秋季学期数据结构A)-Keller_Wang
0.写在前面
1.分析算法的T(n)和S(n)
例1:分析@标注语句执行频度
例2:分析@标注语句执行频度
例3:分析@标注语句执行频度
例4:分析时间复杂度及变量count的值
2.堆栈与队列(特别是循环队列)
例1:若元素入栈次序为ABC,写出所有可能的出栈序列。
例2:长度为n且设有队头、队尾指针的链式队列中,出队操作的时间复杂度为
例3:试说明以下算法的功能。
例4:写出下面的递归算法,并消除递归。
3.前/中/后缀表达式的互化
例1:写出中缀表达式a+(b-c)*d对应的前缀表达式和后缀表达式。
例2:后缀式3, 4, X, *, +, 2, Y, *, 5, /, - (表达式中逗号表示空格)对应的中缀式为
4.写出KMP或改进KMP算法的next数组元素值
例1:写出"abcabaa"的子串的next和nextval数组元素值
5.多维数组/半三角矩阵元素下标与顺序存储下标互算
例1:若某高级语言30行x20列二维数组(设数组元素下标从0开始)元素按行序为主序存储,每个元素存储长度为8字节。若该数组首地址为0,则存储地址为600(该地址为十进制数)的元素的行下标= ,列下标= 。
例2:某10阶对称方阵用一维数组按“行序为主序”顺序存储其下半三角元素(含主对角线元素),若所有下标从0开始,则行、列下标分别为6、7的矩阵元素在一维数组中的存储下标为?
6.广义表的表示;求表头和表尾
例1:广义表(a,b,c,d)的表尾?
例2:设有广义表L=((),()),则GetHead(L)= ;GetTail(L)= ?
7.二叉树的前/中/后序以及层次遍历;各种计算问题
例1:一棵深度为k且具有2^{k}-1个结点的二叉树称为 。这类二叉树的特点是:二叉树的每一层结点的个数都为上一层的_?
例2:已知完全二叉树的第7层(第7层为最后一层)有10个叶结点,则整棵二叉树的结点数为 ?
例3:若完全二叉树(结点编号从1开始)中某结点编号为11,则该结点的右儿子编号为 ,双亲结点编号为 。
例4:一棵二叉树中,度为2的结点数为15,则叶子结点数为 。
例5:二叉树如下图所示,写出先序、中序、后序遍历结点访问次序
8.中序线索化与中序穿线二叉树
例1:二叉树的中序遍历为DGBEAHFIC,画出中序线索化后的穿线二叉树。
例2:假设二叉树已完成中序线索化,以下算法函数利用线索指针实现非递归的中序遍历,请填空使算法完整。
9.已知前/中序遍历次序构造二叉树
例1:设先序遍历某二叉树得到的结点访问序列为ABCD,中序遍历该二叉树的序列为BADC,则后序遍历该二叉树的序列为?
例2:已知10个关键字组成的某二叉排序树的先序遍历关关键字次序为30, 9, 5, 18, 12, 24, 50, 39, 42, 60。画出该二叉排序树。
10.树与森林的转换-孩子兄弟链表
例1:由三棵树组成的森林由广义表(A(B, C, D), E(F), G(H, I(J)))给出,请画出该森林;若用孩子兄弟链表将该森林表示为二叉树形式,画出该二叉树。
11.哈夫曼二叉树与哈夫曼编码, 平均码长的计算
例1:六个符号A,B,C,D,E,F出现的概率分别是1/24, 9/24, 3/24, 5/24, 2/24, 4/24,建立一棵哈夫曼(Huffman)二叉树,给出各个符号对应的哈夫曼编码,并计算这六个字符的平均编码长度。
12.图的存储结构(画图)与DFS、BFS遍历
例1:用邻接表存储n个顶点e条边的无向图,其头(顶点)结点和表(边)结点的总数是?
例2:某DAG的邻接矩阵存储结构如下图所示,基于该存储结构:(1) 画出该DAG;(2) 写出从1号顶点出发的深度优先遍历顶点访问次序;(3) 写出从1号顶点出发的宽度优先遍历顶点访问次序;
13.用普里姆或克鲁斯卡尔算法求最小生成树
14.AOV网络与拓扑排序
例1:某AOV网络如下图所示,若各顶点的邻接点次序为字母升序,写出采用队列和堆栈存储入度为零顶点时,拓扑排序算法得到的排序结果。
15.AOE网络(求顶点的最早开始/最晚开始时间,求关键活动及关键路径)
例1:已知带权网络如下,边上的权重表示活动持续的时间,求解以下问题。(1) 写出各顶点的最早开始与最晚开始时间。(2) 写出关键路径(用顶点拓扑有序序列表示)。
16.最短路径(会填写两种算法的动态过程表格)
17.二叉排序树插入与删除结点;平衡二叉排序树插入结点;等概率成功查找时的ASL计算
例1:9个关键字输入次序为20, 8, 30, 15, 6, 40, 10, 25, 2。按此输入次序构造二叉排序树,写出其中序遍历次序;若每个元素等概率查找,试计算成功查找时的ASL。
18.分块顺序查找的最佳分块方法
例1:900个元素的索引顺序表,分块内部和索引表均用顺序查找,则最佳分块长度为?
19.B-和B+树插入/删除结点的结果画图
20.哈希表(装填因子,同义词,构造原则,线性及二次探测、链表解决冲突的方法及对应的元素等概率成功查找时的ASL的计算)
例1:12个关键字为{19, 14, 23, 01, 68, 20, 84, 27, 55, 11, 10, 79}。设H(K)=K mod 13,地址空间范围0~15,用二次探测再散列解决冲突。画出哈希表;若各元素等概率查找,求成功查找时的平均查找长度。
例2:使用散列函数h(x)=x mod 11(哈希表地址空间0..10),把10个关键字9, 25, 15, 20, 7, 1, 36, 48, 12, 31存入哈希表中。(1) 若使用链地址法解决冲突,试画出构造好的哈希表。(2) 计算各关键字等概率查找条件下查找成功时的平均查找长度
21.希尔排序给定增量序列,写出各趟增量排序结果
例1:设递减增量序列为5, 3, 1, 对以下10元序列进行由小到大希尔排序,写出各趟增量排序结果。49 38 65 97 76 13 27 49 55 04。
22.快速排序各趟排序的结果,支点元素的最终位置
例1:8个待排序关键字为49, 38, 65, 97, 76, 13, 27, 49, 排序下标范围0~7,以0号元素为支点进行非递减的快速排序,求一趟快排的结果以及支点元素的下标。
23.堆排序初始建堆的结果,输出堆顶元素并进行调整后的结果
例1:将序列{ 49, 38, 65, 97, 76, 13, 27, 49}构建为大根堆。
24.基数排序各趟分配和收集的结果
例1:对以下8个3位4进制数采用基数排序进行由小到大排序,写出对最低位、中间位以及最高位分别进行分配和收集的结果。101, 002, 332, 220, 123, 301, 021, 231
25.归并排序各趟结果
例1:写出对如下序列归并排序的各趟结果:{20}{-8}{9}{26}{7}{-9}{-26}{34}{15}{-1}