| 作者 |
| 冯广慧 |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121350719 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书按照“全国硕士研究生招生考试计算机科学与技术学科联考计算机学科专业基础综合考试大纲”的要求编写,基本涵盖所有知识点,并加入部分高校及全国统一考试真题作为自测题,同时给出参考答案和题目解析。本书主要介绍各种常用的经典数据结构(如线性表、栈、队列、串、数组、树、图、集合等)和算法,并在时间复杂度和空间复杂度之间进行平衡与取舍。 本书将C++语言作为数据结构的算法描述语言,将数据结构与面向对象技术有机结合。书中的算法讲解都有完整的C++代码实现,并在Visual Studio 2010环境下编译通过。 |
| 目录 |
| 第1章 概论\t1 1.1 什么是数据结构\t1 1.2 基本概念和术语\t4 1.3 算法和算法分析\t7 1.3.1 算法的定义及特性\t7 1.3.2 算法的设计要求\t8 1.3.3 算法效率的衡量方法\t9 1.3.4 算法的时间复杂度\t10 1.3.5 算法的空间复杂度\t15 1.4 抽象数据类型\t16 习题\t18 第2章 线性表\t20 2.1 线性表的类型定义\t20 2.1.1 线性表的概念\t20 2.1.2 线性表的抽象数据类型\t21 2.2 线性表的顺序表示和实现\t22 2.2.1 线性表的顺序表示\t22 2.2.2 顺序表基本运算的实现\t23 2.3 线性表的链式表示和实现\t28 2.3.1 线性表的链式表示\t29 2.3.2 单链表上基本运算的实现\t32 2.4 双链表\t40 2.5 循环链表\t44 2.6 线性表实现方法的比较\t46 2.7 算法设计举例\t47 习题\t52 第3章 栈和队列\t55 3.1 栈\t55 3.1.1 栈的类型定义\t55 3.1.2 顺序栈的表示和实现\t57 3.1.3 链栈的表示和实现\t60 3.2 栈的应用举例\t62 3.2.1 十进制数转换为其他进制数\t62 3.2.2 表达式中括号的匹配检查\t63 3.2.3 表达式求值\t64 3.2.4 利用栈消除递归\t72 3.3 队列\t77 3.3.1 队列的类型定义\t77 3.3.2 循环队列—队列的顺序表示和 实现\t78 3.3.3 链队列—队列的链式表示和 实现\t82 3.4 算法设计举例\t83 习题\t87 第4章 串\t90 4.1 串的基本概念\t90 4.2 串的表示和实现\t91 4.2.1 串的顺序存储结构\t91 4.2.2 串的链式存储结构\t94 4.3 串的模式匹配\t95 4.3.1 朴素的模式匹配算法\t95 4.3.2 KMP算法\t96 习题\t101 第5章 数组\t104 5.1 数组的基本概念\t104 5.2 矩阵的压缩存储\t107 5.2.1 特殊矩阵\t107 5.2.2 稀疏矩阵\t110 5.3 算法设计举例\t117 习题\t121 第6章 树和二叉树\t124 6.1 树的概念\t124 6.2 二叉树的概念和性质\t126 6.2.1 二叉树的概念和抽象数据 类型\t126 6.2.2 二叉树的性质\t129 6.3 二叉树的表示和实现\t131 6.3.1 二叉树的存储结构\t131 6.3.2 二叉树的遍历运算\t133 6.3.3 二叉树的其他基本运算\t140 6.4 树和森林\t142 6.4.1 树的存储结构\t143 6.4.2 树、森林和二叉树的相互 转换\t146 6.4.3 树和森林的遍历运算\t148 6.4.4 树和森林的其他基本运算\t151 *6.5 线索二叉树\t154 6.5.1 线索二叉树的概念\t154 6.5.2 线索二叉树的基本运算\t157 6.6 算法设计举例\t161 习题\t162 第7章 树和二叉树的应用\t166 *7.1 表达式树\t166 7.2 哈夫曼树和哈夫曼编码\t171 7.2.1 哈夫曼树\t171 7.2.2 哈夫曼编码\t175 7.3 堆和优先级队列\t178 7.3.1 堆\t178 7.3.2 优先级队列\t179 *7.4 并查集\t184 7.5 算法设计举例\t187 习题\t189 第8章 图\t191 8.1 图的概念\t191 8.2 图的存储结构\t196 8.2.1 邻接矩阵\t196 8.2.2 邻接表\t200 *8.2.3 十字链表\t205 *8.2.4 邻接多重表\t205 8.3 图的遍历\t206 8.3.1 深度优先遍历\t207 8.3.2 广度优先遍历\t209 8.3.3 图的连通分量和生成树\t212 习题\t213 第9章 图的应用\t217 9.1 最小生成树\t217 9.1.1 最小生成树的概念\t217 9.1.2 Prim算法\t218 9.1.3 Kruskal算法\t222 9.2 有向无环图及其应用\t225 9.2.1 拓扑排序\t225 9.2.2 关键路径\t230 9.3 最短路径\t236 9.3.1 单源点最短路径\t236 9.3.2 每对顶点之间的最短路径\t240 习题\t243 第10章 集合与查找\t247 10.1 基本概念\t247 10.2 静态查找表上的查找\t248 10.2.1 顺序查找\t248 10.2.2 折半查找\t250 10.2.3 分块查找\t254 10.3 动态查找表上的查找\t256 10.3.1 二叉查找树\t256 10.3.2 平衡二叉树\t263 *10.3.3 B树\t275 *10.3.4 B+树\t280 *10.3.5 字典树\t281 10.4 算法设计举例\t282 习题\t285 第11章 散列表\t288 11.1 散列表的概念\t288 11.2 构造散列函数的方法\t289 11.2.1 直接定址法\t289 11.2.2 折叠法\t289 11.2.3 数字分析法\t289 11.2.4 平方取中法\t290 11.2.5 除留余数法\t290 11.3 解决冲突的方法\t291 11.3.1 闭散列法\t291 11.3.2 开散列法\t293 11.4 散列表的实现\t294 11.4.1 闭散列表的表示和实现\t294 11.4.2 开散列表的表示和实现\t298 11.4.3 闭散列表与开散列表的 比较\t302 11.5 散列表的查找性能分析\t302 习题\t303 第12章 排序\t306 12.1 排序的基本概念\t306 12.2 插入排序\t307 12.2.1 直接插入排序\t307 12.2.2 折半插入排序\t308 12.2.3 希尔排序\t309 12.3 交换排序\t310 12.3.1 冒泡排序\t310 12.3.2 快速排序\t311 12.4 选择排序\t315 12.4.1 直接选择排序\t315 12.4.2 堆排序\t316 *12.4.3 锦标赛排序\t320 12.5 归并排序\t320 *12.6 基数排序\t322 12.7 各种内部排序方法的比较\t324 *12.8 外部排序\t327 12.8.1 置换选择排序\t328 12.8.2 多路归并排序\t330 习题\t331 附录A 上机实验参考题目\t334 参考文献\t336 |