大连海事大学欢迎你

img

数据结构(同等学力)

考试科目:数据结构

试卷满分及考试时间:试卷满分为100分,考试时间为180分钟。

一、数据结构基本概念

考试内容

(1) 数据结构的基本概念:数据、数据元素、数据结构、数据的逻辑结构、物理结构、算法等。

(2) 抽象数据类型的表示和实现。

(3) 算法时间复杂度和空间复杂度的分析。

考试要求

1. 掌握和理解数据结构的概念;

2. 运用形式化方法定义和描述一个实际问题对应的数据结构;

3. 掌握数据结构的相关术语与基本概念;

4. 掌握算法的时间复杂度与空间复杂度以及判断算法好坏的方法。

二、线性表

考试内容

(1) 线性表的类型定义。

(2) 线性表的顺序存储方法和实现,相关查找、插入和删除算法算法实现。

(3) 线性表的链式存储方法和实现,相关查找、插入和删除算法算法实现,同时要注意链表中的头结点、头指针和首元结点的区别及循环链表、双向链表的特点。

(4) 从时间和空间复杂度的角度比较两种存储结构的不同特点及其适用场合。

考试要求

1. 掌握线性表的顺序存储结构和链式存储结构的各自特点;

2. 区分数组和顺序表及线性表的特征与关联;

3. 熟练掌握顺序表和链式表的插入、删除和查找等基本操作;

4. 能够编制和实现顺序表和链式表基本操作的程序;

5. 掌握线性表在计算机内部与外部所起的重要作用;通过对它们各自算法的时间复杂度分析,能够综合判断和衡量一个好的算法即程序的标准。

三、栈和队列

考试内容

(1) 栈的定义及特点,栈的顺序存储和链接存储的表示和实现,进栈出栈算法,注意栈满和栈空的条件。

(2) 栈的应用举例,如表达式求值、数制转换等。

(3) 栈与递归的实现。

(4) 队列的定义及特点,队列的顺序存储(循环队列)和链接存储的表示和实现,循环队列和链队列的进队出队算法。循环队列中队头与队尾指针的表示,队满及队空条件。

考试要求

1. 掌握栈和队列两种特殊的线性表的特点

2. 能够区分栈、队列与线性表的关系、顺序栈与线性表的关系、链式栈与链式线性表的关系、顺序队列与顺序表的关系、链式队列与链式线性表的关系;

3. 熟练掌握栈的基本操作即进栈、出栈、栈空、栈满、取栈顶元素等操作;

4. 熟练掌握队列的基本操作即入队列、出队列、判断队列空、队列满等;

5. 能分析及编写递归调用程序。

四、串

考试内容

(1) 串的定义

(2) 串的表示和实现,包括定长顺序存储表示,堆分配存储表示。

(3) 串的模式匹配算法,包括古典的模式匹配算法和KMP算法。

考试要求

1. 掌握串的定义与特点,串与字符操作的区别;

2. 掌握串的抽象数据类型的定义、基本操作;

3. 掌握串的动态存储的特点及应用;

4. 熟练掌握串的模式匹配算法中的朴素算法、首尾匹配算法和KMP算法;会手工计算KMP算法的next[j]。

五、数组和广义表

考试内容

(1) 数组的逻辑结构定义和存储方法。

(2) 特殊矩阵和稀疏矩阵的压缩存储方法及其适用范围。

(3) 广义表的结构特点及其存储方法。

考试要求

1. 掌握数组的定义;理解数组的抽象数据类型定义;

2. 掌握二维数组的存储结构及寻址方法;

3. 理解三维及三维以上数组的存储结构及寻址方法;

4. 掌握矩阵压缩存储的基本思想;

5. 掌握特殊矩阵和稀疏矩阵的压缩存储方法及寻址方法;

6. 掌握三元组顺序表的转置运算;

7. 掌握广义表的定义及其基本概念;理解广义表的抽象数据类型定义;理解广义表的存储结构;了解广义表基本运算的实现。

六、树和二叉树

考试内容

(1) 二叉树的定义、性质和存储结构。

(2) 二叉树的遍历及有关算法,利用遍历算法实现二叉树的其他操作,如计算二叉树结点个数、叶子结点个数、二叉树的高度等。

(3) 二叉树的线索化,线索化二叉树的特性及寻找某结点的前驱和后继的方法。

(4) 树和森林的定义、存储结构与二叉树的转换。

(5) 树的应用,哈夫曼树及哈夫曼编码、带权路径长度的计算。

考试要求

1. 熟练掌握二叉树的结构特性,了解相应的证明方法;

2. 熟悉二叉树的各种存储结构的特点及适用范围;

3. 掌握各种遍历的递归算法,灵活运用遍历算法实现二叉树的其它操作;

4. 理解二叉树线索化的实质是建立结点与其在相应序列中的前驱或后继之间的直接联系,熟练掌握二叉树的线索化过程以及在中序线索化树上找给定结点的前驱和后继的方法;

5. 熟悉树的各种存储结构及其特点,

6. 掌握树和森林与二叉树的转换方法;

7. 掌握哈夫曼树的特性及建立哈夫曼树和哈夫曼编码的方法。

七、图

考试内容

(1) 图的定义及相关术语和性质。

(2) 图的存储结构四种存储结构:数组表示法、邻接表、十字链表和邻接多重表。

(3) 图的两种遍历策略:深度优先搜索和广度优先搜索,以及相关算法。

(4) 图的连通性,连通分量,最小生成树,构造最小生成树的两种算法:普里姆算法和克鲁斯卡尔算法。

(5) 拓扑排序和关键路径。

(6) 两类求最短路径问题的算法,迪杰斯特拉算法和弗洛伊德算法。

考试要求

1. 掌握理解图的抽象数据类型定义及其基本术语;

2. 掌握图的邻接矩阵和邻接表的存储方法;理解图的十字链表存储;

3. 掌握图的遍历方法及其在邻接矩阵和邻接表存储结构上的实现;

4. 理解无向图的连通性;了解有向图的连通性;

5. 掌握构造最小生成树的Prim算法和Kruskal算法的基本思想和求解过程;

6. 掌握求解最短路径的Dijkstra算法和Floyd算法的基本思想及过程;

7. 掌握拓扑序列的定义及拓扑排序算法;

8. 掌握关键路径的定义及求解过程;理解求关键路径的算法。

八、查找

考试内容

(1) 静态查找:顺序查找、折半查找、分块查找的查找方法及其实现方法。

(2) 动态查找:二叉排序树、平衡二叉树、B+树。二叉排序树的插入和查找算法及其实现。

(3) 哈希表:哈希函数的构造方法、处理冲突的方法、哈希表的查找与分析。

考试要求

1. 掌握静态查找(顺序查找、折半查找和分块查找等)及其分析方法,并能灵活地运用;

2. 掌握二叉排序树的构造方法、查找过程及其查找分析;

3. 掌握平衡二叉树的构造、调整方法及平衡树查找分析;

4. 掌握哈希表的建表方法和处理冲突的方法,理解哈希表与其他查找表的本质区别;

5. 掌握各种查找方法的平均查找长度;

6. 掌握各种方法表示的查找表的存储结构及其优缺点和适应场合。

九、排序

考试内容

(1) 排序的基本概念。

(2) 插入排序:直接插入排序、其他插入排序和希尔排序。

(3) 交换排序:冒泡排序和快速排序。

(4) 选择排序:简单选择排序和堆排序。

(5) 归并排序:2-路归并排序。

(6) 基数排序:多关键字的排序和链数基数排序。

(7) 以上各种排序的定义和各种排序方法的特点,并能加以灵活应用。各种排序方法的算法实现。各种排序方法的时间复杂度的分析方法。能从“关键字间的比较次数”分析算法的平均情况和最坏情况的时间性能。排序方法“稳定”或“不稳定”的含义。

考试要求

1. 理解排序的基本概念,包括排序的稳定性及排序的性能分析(时间与空间复杂度);

2. 掌握插入排序、交换排序、选择排序和归并排序等的排序方法、性能分析方法及手工执行排序算法;

3. 理解基数排序的方法及其性能分析和手工执行排序算法;

4. 掌握插入排序、交换排序、选择排序和归并排序中的一些典型算法;

l 参阅:

《数据结构》 严蔚敏、吴伟民  清华大学出版社