《数据结构(Java版)叶核亚(第4版)》样卷及答案课件

《数据结构(Java版)》课程样卷

教材:《数据结构(Java版)(第4版)》,叶核亚编著,电子工业出版社,2015年7月出版。

试题范围:第1~9章,掌握基础原理,熟悉经典算法问答题编程题重点是:1.单/双链表 2.二叉树/树,递归算法。这是必须掌握的,即使部分学生掌握不了递归算法,也必须考。不考内容:Floyd,衡二叉树,第10章。

已知java.lang.String类声明以下成员方法:

public String replaceAll(String pattern, String str) //将所有与pattern匹配的子串替换为str

下列语句的执行结果是________________________________________。

String target="aababbabac", pattern="ab", str="aba";

System.out.println("\""+target+"\".replaceAll(\""+pattern+"\", \""+str+"\")=\""+

target.replaceAll(pattern,str)+"\"");

A+B*(C-D*(E+F)/G+H)-(I+J)*K的后缀表达式为______________________。

已知二维数组a[10][8]采用行主序存储,数组首地址是1000,每个元素占用4字节,则数组元素a[4][5]的存储地址是__________________________。

由n个顶点组成的无向连通图,最多有_____________________条边。

排序关键字序列(升序){5,17,20,32,43,55,61,61*,72,96},采用二分法查找算法,查找96的元素比较序列是____________________;查找35的元素比较序列是____________________。

关键字序列{93, 17, 56, 42, 78, 15, 42*, 25, 19},采用希尔排序(升序)算法,第一趟排序后的序列是_________________________________________。

问答题(50分=5分×10题)

已知目标串为"aabcbabcaabcaababc",模式串为"abcaababc",写出模式串改进的next数组;画出KMP算法的匹配过程,给出字符比较次数。

画出以下稀疏矩阵非零元素三元组的十字链表存储结构。

已知一棵二叉树的遍历序列如下,画出这棵二叉树并进行中序线索化。

中根遍历序列:CBDFEGAMLNKJOPRQIHS;

后根遍历序列:CFGEDBMNLKRQPOJISHA

设一段正文由字符集{A,B,C,D,E,F,G,H}组成,其中每个字符在正文中的出现次数依次为{23,5,17,4,9,31,29,18},采用Huffman编码对这段正文进行压缩存储,画出所构造的Huffman树,并写出每个字符的Huffman编码。说明Huffman编码的特点和作用。

已知以下无向图中各顶点按{A,B,C,D,E,F,G,H}次序存储。分别画出采用深度优先搜索(从A开始)和广度优先搜索(从D开始)遍历图时栈或顺序循环队列(容量为6)的动态变化示意图,说明栈或队列的作用。

什么是图的最小生成树?构造以下带权无向图的最小生成树,给出该最小生成树代价。说明Prim算法和Kruskal算法的差别。

画出以下带权有向图采用Dijkstra算法以E为源点的单源最短路径所选择的边,写出各路径长度。

设散列表采用链地址法,初始容量length为10;散列函数采用除留余数法hash(key)=key % length;装填因子为0.75,散列数组容量以2倍扩充。由关键字序列{16,75,60,43,54,90,46,31,27,88,64,50}构造散列表,分别画出扩容前和最终状态图,计算。

画出由关键字序列{50, 16, 74, 60, 43, 16, 90, 46, 31, 29, 88, 71, 64, 13, 65}构造的一棵二叉排序树,计算。执行删除结点50、插入50,再画出操作后的二叉排序树。

什么是堆序列?堆序列在堆排序算法中起什么作用?将关键字序列{29, 10, 25, 26, 58, 12, 31, 18, 47}分别建成一个最大堆和一个最小堆,写出堆序列,画出对应的完全二叉树;写出每一趟堆排序结果。若有关键字重复元素,做标记以区别。

程序阅读和改错题(18分=6分×3题)

SortedCirDoublyList排序循环merge(list)方法功能是什么?方法体中,while、if等语句功能是什么?

② 已知两条排序循环双链表this和l