济南大学自命题科目考试大纲847算法与数据结构一、参考书目1.严蔚敏,《数据结构》,清华大学出版社2.殷人昆,《数据结构(用面向对象方法与C++语言描述)第2版》,清华大学出版社二、考试题型与分值选择题、填空题、判断题、计算题、算法题三、考试内容一、绪论1.理解数据结构的基本概念;数据结构的分类;理解数据类型和抽象数据类型的概念;2.掌握算法的定义和特性,理解算法的设计目标和判别算法优劣的性能标准;掌握算法效率得度量方法;掌握算法的时间、空间复杂度概念以及算法时间、空间复杂度的渐进分析方法。二、线性表1.掌握线性表的逻辑结构和基本操作;2.熟练掌握线性表的顺序存储结构,链式存储结构及其它们的实现方法;3.掌握循环链表和双向链表的概念和基本的设计方法;4.掌握典型算法:线性表的原地逆置问题,约瑟夫环问题,两个有序线性表的合并问题,多项式计算问题三、栈和队列1.熟练掌握栈的概念、顺序栈和链式栈的设计方法及栈的典型应用(数制转换,括号匹配,表达式计算);2.掌握递归的概念;理解递归算法的思想,递归算法执行过程中工作栈的变化过程,对于简单的递归过程可以用栈将其改为非递归过程。3.熟练掌握队列的概念、循环队列和链式队列的设计方法及队列的典型应用(输出杨辉三角形)4.了解优先级队列和双端队列的概念和存储表示四、数组1.理解多维数组的概念及存储结构,熟练掌握多维数组中任意一个数组元素的存储地址计算方法;2.熟练掌握特殊矩阵(三角矩阵,对称矩阵,多对角线矩阵)的压缩存储方法;3.掌握稀疏矩阵的概念,稀疏因子的定义;掌握稀疏矩阵的三元组表示及矩阵的转置、相加、相乘算法。五、树和二叉树1.理解树的定义、树的表示方法和树的几种典型存储结构;2.熟练掌握二叉树的定义、二叉树的性质及其证明方法、二叉树的存储结构;3.熟练掌握二叉树遍历的递归算法和二叉树遍历的应用,掌握二叉树的层次遍历;4.了解二叉树遍历的非递归算法;掌握通过给定两个不同的遍历序列是否能唯一确定一个二叉树;济南大学自命题科目考试大纲5.掌握中序线索二叉树的建立和遍历方法;6.掌握树的存储表示方法,掌握树与二叉树的转换方法;森林与二叉树的转换方法;树和森林的遍历方法;7.理解哈夫曼树的概念,掌握建立哈夫曼树和哈夫曼编码的方法;六、图1.掌握图的基本概念和术语;熟练掌握图的邻接矩阵表示方法和邻接表表示方法;2.掌握用邻接矩阵,邻接表实现图的基本操作(创建一个图,插入或删除图中的顶点或边);3.熟练掌握图的深度优先搜索和广度优先搜索,了解非连通图的遍历方法和连通分量的计算;4.理解最小生成树的概念,熟练掌握Prim算法和Kruskal算法并掌握其生成方法;5.通过最小生成树算法了解贪心算法的思想及其求解问题的方法;6.熟练掌握单源点最短路径的Dijkstra算法,进一步理解如何用贪心算法求解问题;7.掌握用Floyd算法求图中所有顶点之间的最短路径;8.理解AOV网络和AOE网络的概念,掌握拓扑排序方法和计算关键路径的算法。七、查找1.掌握查找的基本概念和查找方法的评判标准;2.熟练掌握顺序表查找和有序表查找的算法及其性能分析,计算平均查找长度;3.了解动态查找表的特点,二叉排序树的概念;掌握二叉排序树的构造和查找方法;理解平衡二叉树(AVL树)的概念;4.熟练掌握哈希函数、哈希表的构造方法,解决哈希冲突的方法,哈希表的查找及其分析。八、排序1.掌握排序的基本概念,理解排序“稳定”和“不稳定”的含义,理解排序算法的评判标准;2.熟练掌握直接插入排序、希尔排序、直接选择排序、堆排序、快速排序、二路归并排序、基数排序的算法思想和算法设计方法;理解各种排序方法的性能特点并能灵活应用;3.通过快速排序和二路归并排序了解分治算法的思想及其求解问题的方法。