选择特殊符号
选择搜索类型
请输入搜索
《数据结构与算法设计》是为适应各类大学本科生学习数据结构的需要而编写的教材。全书共分11章,第1章绪论主要介绍学习这门课程的意义以及这门课程的研究内容和关键问题;第2章线性表主要介绍线性表的特点以及算法设计;第3章栈和队列主要介绍这两种结构的实现方法及其应用。
前言
第1章 绪论
1.1 数据结构的实践意义
1.2 数据结构的理论意义
1.3 数据结构研究的内容和关键问题
习题
第2章 线性表
2.1 线性表的概念及抽象数据类型定义
2.2 线性表的顺序存储
2.3 线性表的链式存储
2.4 线性表的应用--一元多项式的表示及相加
2.5 顺序表与链表的综合比较
习题
第3章 栈和队列
3.1 栈
3.2 队列
习题
第4章 串
4.1 串的定义与操作
4.2 串的存储结构及操作
4.3 串操作应用举例
习题
第5章 数组和广义表
5.1 数组的定义
5.2 数组的顺序表示和实现
5.3 矩阵的压缩存储
5.4 广义表
习题
第6章 树
6.1 树的定义、操作及基本术语
6.2 二叉树
6.3 遍历二叉树和线索二叉树
6.4 树和森林
6.5 哈夫曼树及其应用
习题
第7章 图
7.1 图定义和术语
7.2 图的存储结构
7.3 图的遍历
7.4 图的连通性
7.5 有向无环图及其应用
7.6 最短路径
习题
第8章 查找
8.1 查找的基本概念
8.2 静态查找表
8.3 动态查找表
8.4 哈希表
习题
第9章 排序
9.1 概述
9.2 插入排序
9.3 交换排序
9.4 选择排序
9.5 归并排序
9.6 外部排序简介
习题
第10章 文件
10.1 基本概念
10.2 顺序文件
10.3 索引文件
10.4 ISAM文件和VSAM文件
10.5 直接存取文件(散列文件)
习题
第11章 算法设计策略
11.1 分而治之(DivideandConqureAlgorithm)
11.2 贪心算法(GreedyAlgorithm)
11.3 动态规划算法(DynamicProgramming)
11.4 状态搜索策略(StateSearch)
11.5 回溯算法(BacktrakingAlgorithm)
11.6 随机算法(RandomAlgorithm)
11.7 算法设计中关键与技巧
习题
参考文献
……
基础类:二叉搜索(排序)树,线索二叉树,哈夫曼树(最优二叉树),二叉堆平衡树类:AVL,红黑树,2-3树,2-3-4树,B树,B+树,B-树,treap,SBT。优先队列类:左高树(左偏树,可并堆,斜...
1、如果算法描述已经很彻底了,只要补充变量定义,等语言细节就可以,把算法描述转化为各种编程语言了。如果只是泛泛而论,自己去把算法转换成伪代码描述,或者流程图之类的,然后再用C语言实现。2、算法只是一种...
何谓数据结构 ? 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的...
“数据结构与算法设计”精品课程的建设与实践
本文从教师队伍建设、教学内容、教学方法、教材建设以及教学管理等方面总结了北京市精品课程\"数据结构与算法设计\"的建设与实践过程。教学实践证明,该课程符合信息技术发展的需要,为学生继续学习和可持续发展奠定了良好的基础。
《数据结构与算法设计》教学课程改革与实验创新研究
《数据结构与算法设计》是理工科学生必修的一门计算机基础核心课程。根据《数据结构与算法设计》课程的具体特点,从教学课程和实验两个大方面入手,提出了包括教学内容、教学方法及实验方法的改革研究方案。通过对课程内容的设计以及实验方法的创新,能够提高学生的学习积极性和兴趣,增加学生的综合能力,达到该课程最终教学的目的。
中文名: 算法设计与数据结构
原名: Algorithm Design
图书分类: 软件
资源格式: PDF
版本: 英文扫描版
地区: 美国
语言: 英文
本书是近年来关于算法设计和分析的不可多得的优秀教材。本书围绕算法设计技术组织素材,对每种算法技术选择了多个典型范例进行分析。本书将直观性与严谨性完美地结合起来。每章从实际问题出发,经过具体、深入、细致的分析,自然且富有启发性地引出相应的算法设计思想,并对算法的正确性、复杂性进行恰当的分析、认证。本书覆盖的面较宽,凡属串行算法的经典论题都有涉及,并且论述深入有新意。全书共200多道丰富而精彩的习题是本书的重要组成部分,也是本书的突出特色之一。
本书特点:
本教材内容非常丰富,不但深入系统地阐述了算法设计与分析的理论,而且给出了大量的典型范例和参考文献。
本教材以算法为主线来处理算法与数据结构的关系。这种安排突出了算法设计的中心思想,避免了与数据结构课程在内容上的重复,更加适合于国内的教学计划。
本教材的叙述和选材非常适合教学。内容由浅入深,由具体到抽象,从算法设计技术与分析方法自然过渡到计算复杂性理论,选配了大量难度适当的练习,并给出求解范例。
第1章 绪论 1
1.1 预备知识 1
1.1.1 集合的笛卡儿积 1
1.1.2 二元关系 2
1.1.3 二元关系的基本性质和几种重要关系 3
1.2 什么是数据结构 4
1.2.1 从实际问题理解数据结构 4
1.2.2 数据结构所讨论的内容 6
1.2.3 如何表示数据结构 9
1.3 抽象数据类型 10
1.3.1 什么是抽象数据类型 10
1.3.2 抽象数据类型的定义与实现 12
1.4 算法与算法分析 13
1.4.1 什么是算法 13
1.4.2 算法描述 15
1.4.3 常用的算法设计方法 16
1.4.4 算法分析 21
习题 24
上机练习题 26
第2章 线性表的顺序存储及其运算 27
2.1 线性表的概念 27
2.1.1 什么是线性表 27
2.1.2 线性表的抽象数据类型 29
2.2 顺序表及其运算实现 30
2.2.1 线性表的顺序存储--顺序表 30
2.2.2 顺序表的基本运算 31
2.2.3 顺序表应用例--求子集 36
2.3 栈 36
2.3.1 什么是栈 37
2.3.2 栈的抽象数据类型 39
2.3.3 顺序栈及其运算 39
2.4 栈应用 42
2.4.1 栈在优先级处理中的应用 42
2.4.2 栈与分治法 48
2.4.3 栈与回溯法 50
2.4.4 栈与递归 55
2.5 队列 63
2.5.1 队列及其抽象数据类型 63
2.5.2 顺序队列及其运算 64
2.5.3 队列应用例 68
* 2.5.4 优先队列 72
2.6 数组与特殊矩阵的表示 74
2.6.1 数组的顺序存储 74
2.6.2 规则矩阵的压缩存储 76
* 2.6.3 稀疏矩阵的三列二维数组表示--三元组顺序表 78
习题 81
上机练习题 82
第3章 链表 83
3.1 线性表的链式存储--线性链表 83
3.1.1 线性链表的结构特点 83
3.1.2 线性链表的运算 84
3.2 链式栈与链式队列 91
3.2.1 栈的链式存储--链式栈 91
3.2.2 队列的链式存储--链式队列 95
3.3 循环链表 98
3.3.1 循环链表的结构特点 98
3.3.2 循环链表的基本运算 99
3.3.3 链表应用例 103
*3.4 多重链表 109
3.4.1 多重链表结构 109
3.4.2 双向链表 110
*3.5 广义表 112
3.5.1 什么是广义表 113
3.5.2 广义表的存储表示 114
3.5.3 广义表的基本运算 116
习题 120
上机练习题 121
第4章 树与二叉树 122
4.1 树的基本概念 122
4.1.1 什么是树 122
4.1.2 树的性质 127
4.2 二叉树 128
4.2.1 什么是二叉树 128
4.2.2 二叉树的基本性质 128
4.2.3 二叉树的抽象数据类型 131
4.2.4 二叉树的存储结构 131
4.2.5 二叉树的遍历及其他运算 133
* 4.2.6 线索二叉树 138
4.3 二叉树应用 141
4.3.1 表达式线性化 141
4.3.2 最优二叉树 143
4.3.3 二叉搜索树 148
4.3.4 堆 154
* 4.3.5 二叉树与减治法 160
4.4 树的运算 163
4.4.1 树的抽象数据类型 163
4.4.2 树的存储结构 164
4.4.3 树的遍历 165
* 4.4.4 树的其他运算 167
* 4.5 树与回溯法 170
4.5.1 问题解的描述--解空间树 171
4.5.2 回溯法的求解过程分析--遍历解空间树 172
4.5.3 回溯法求解问题的形式化描述 174
* 4.6 森林的遍历 176
4.6.1 森林与二叉树的转换 176
4.6.2 森林的遍历 177
习题 178
上机练习题 179
第5章 图 180
5.1 图的基本概念 180
5.1.1 图的定义和概念 180
5.1.2 图的抽象数据类型 184
*5.1.3 欧拉路径 185
5.2 图的存储结构 186
5.2.1 图的邻接矩阵表示 186
5.2.2 图的邻接表表示 189
*5.2.3 图的其他表示方法 192
5.3 图的遍历 195
5.3.1 图的深度优先遍历 195
5.3.2 图的广度优先遍历 197
5.3.3 图遍历的应用 198
*5.3.4 图的连通性 200
*5.4 有向图与有向无环图 201
5.4.1 有向图的连通性和传递闭包 202
*5.4.2 有向无环图和拓扑排序 204
*5.4.3 关键路径 207
5.5 最小生成树 208
5.5.1 图的生成树与最小生成树 209
5.5.2 普里姆(Prim)算法 210
5.5.3 克鲁斯卡尔(Kruskal)算法 213
5.5.4 贪心算法 215
5.6 最短路径问题 218
5.6.1 单源最短路径 218
5.6.2 全源最短路径 220
5.6.3 动态规划算法 223
5.7 图应用例--城市间公路交通网问题 227
5.7.1 问题描述 227
5.7.2 问题求解思路 228
习题 228
上机练习题 230
第6章 查找 231
6.1 线性查找表 231
6.1.1 顺序查找 232
6.1.2 折半查找 232
*6.1.3 斐波那契查找 234
6.1.4 线性查找表的性能比较 234
6.2 二叉搜索树查找性能 235
6.3 AVL树 236
6.3.1 BST的旋转操作 237
6.3.2 AVL树的插入和平衡化旋转 238
*6.3.3 AVL树的删除 240
*6.3.4 AVL树的性能 241
6.4 B-树 242
6.4.1 多路动态搜索树 242
6.4.2 B-树的查找 243
6.4.3 B-树的插入 244
*6.4.4 B-树的删除 245
6.5 散列方法 246
6.5.1 散列技术 246
6.5.2 散列函数 247
6.5.3 冲突处理 250
6.5.4 散列的删除 252
6.5.5 散列的性能 252
6.6 静态索引结构 253
6.6.1 索引查找 253
6.6.2 索引存储方式 254
*6.6.3 索引文件结构 255
6.7 模式匹配 258
6.7.1 字符串及其ADT 258
6.7.2 字符串的存储表示 259
6.7.3 字符串的模式匹配及简单匹配算法 259
6.7.4 字符串匹配的KMP算法 260
习题 263
上机练习题 264
第7章 排序 265
7.1 排序的概念及算法性能分析 265
7.2 基本排序方法 266
7.2.1 冒泡排序 267
7.2.2 插入排序 268
7.2.3 直接选择排序 272
7.2.4 基本排序方法的比较 273
7.3 快速排序 274
7.3.1 快速排序的过程 274
7.3.2 快速排序的性能分析 275
7.4 归并排序 276
7.4.1 二路归并 276
7.4.2 自底向上的归并排序 276
7.4.3 自顶向下的归并排序 278
*7.5 锦标赛排序 279
7.6 堆排序 280
7.6.1 堆排序的思想 280
7.6.2 堆排序的实现 282
7.7 内排序方法分析 283
*7.7.1 排序方法的下界 283
7.7.2 内排序方法的比较 284
7.8 线性时间复杂度的排序算法 285
*7.8.1 计数排序 285
7.8.2 基数排序 287
7.9 外部排序 290
7.9.1 外部排序方法 290
*7.9.2 基于败者树的k路归并方法 291
*7.9.3 排序--归并的改进 292
习题 296
上机练习题 297
实验指导 298
实验一 顺序表及其应用 299
实验二 求解迷宫问题 301
实验三 简单算术表达式的处理 302
实验四 求解简单背包问题 303
实验五 链表及其应用 304
实验六 实验室机时机位的管理 305
实验七 实现Huffman编码 307
实验八 文件管理的模拟 309
实验九 求网络站点间的最短连接 312
实验十 查找最高分与次高分 314
实验十一 比赛日程安排与成绩统计 316