编辑推荐
《数据结构与算法》在具体内容上按照数据结构基本算法-初步应用-高级应用拓展逐步递进展开,使不同层次的学生都学有所得
内容简介
本书系统完整地介绍了线性表、栈和队列、树和二叉树、图和字符串等数据结构的抽象数据类型、操作实现和应用实例,并讨论了各种查找技术和排序算法。通过数据结构抽象数据类型定义和接口封装,培养读者的抽象思维能力。书中的算法采用规范完整的C语言描述,读者只需添加主程序就能够运行程序,进而能够在调试层面理解算法,从而跨越抽象和具体之间的鸿沟。本书通过每章开头的两个关键词进行章节主要内容概览,通过大量的图表辅助读者理解复杂的算法过程,通过应用实例和习题中的算法设计题目及应用题目强化、提高读者的应用实践能力。 本书既可作为高等院校计算机类相关专业的教材,也可作为高职院校计算机类相关专业的教材,还可作为计算机爱好者的自学书籍和计算机软件开发的工程技术人员的参考书。
作者简介
暂无
目录
目录
第1章绪论
1.1为什么要学习数据结构
1.2抽象数据类型
1.3数据结构
1.3.1数据结构的基本术语
1.3.2数据结构研究的三要素
1.4算法与算法效率
1.4.1算法举例
1.4.2什么是算法
1.4.3算法评价标准
1.4.4算法描述方法
1.5算法分析
1.5.1算法比较举例
1.5.2时间复杂度分析
1.5.3常见循环的时间复杂度举例
习题
第2章线性表
2.1线性表的概念
2.1.1线性表的定义
2.1.2线性表的抽象数据类型定义
2.1.3顺序表VS链表
2.2顺序表的建立与判空
2.2.1创建空的顺序表
2.2.2判断顺序表为空
2.2.3扩展延伸: 通过调试理解算法
2.3顺序表的插入和删除
2.3.1插入算法
2.3.2删除算法
2.3.3小白实践: 完整示例
2.4顺序表的查找定位
2.4.1查找算法
2.4.2二分查找
2.5单链表的建立与判空
2.5.1建立单链表
2.5.2链表的判空
2.5.3用头插法建立单链表
2.5.4用尾插法建立单链表
2.6单链表的查找
2.7单链表的插入
2.7.1后插算法
2.7.2前插算法
2.8单链表的删除
2.8.1按位置删除
2.8.2按值删除
2.9单循环链表
2.10双链表和双循环链表
2.10.1双链表
2.10.2双循环链表
2.11线性表的应用: 一元多项式的表示和运算
2.12线性表的应用: Josephus问题
2.13动态链接库
2.13.1动态链接库的概念
2.13.2动态链接库的优缺点
2.13.3动态链接库的构建与链接
习题
第3章栈和队列
3.1栈和队列的概念
3.1.1栈和队列的定义
3.1.2栈的抽象数据类型定义
3.1.3栈混洗
3.2顺序栈
3.2.1创建空栈
3.2.2判断栈空
3.2.3进栈
3.2.4出栈
3.2.5取栈顶元素
3.3链栈
3.3.1创建空栈
3.3.2判断栈空
3.3.3进栈
3.3.4出栈
3.3.5取栈顶元素
3.4栈的应用: 进制转换
3.5栈的应用: 括号匹配
3.6栈的应用: 栈与递归
3.7栈的应用: 迷宫
3.8栈的应用: 表达式求值
3.9循环队列
3.9.1创建空队列
3.9.2判断队列是否为空
3.9.3入队
3.9.4出队
3.9.5取队头元素
3.10链队列
3.10.1创建空队列
3.10.2判断队列是否为空
3.10.3入队
3.10.4出队
3.10.5取队头元素
3.11队列的应用: 迷宫
3.12队列的应用: 农夫过河
3.13双端队列
习题
第4章树和二叉树
4.1二叉树的概念
4.1.1二叉树的基本形态和分类
4.1.2二叉树的抽象数据类型定义
4.2二叉树的数学性质
4.3二叉树的深度优先遍历
4.4二叉树的广度优先遍历
4.5二叉树的重构
4.6二叉树的交叉遍历
4.7二叉树的顺序存储
4.8二叉树的链式存储
4.9二叉树的建立和遍历(递归算法)
4.9.1二叉树的遍历
4.9.2二叉树的建立
4.10二叉树的建立和遍历(非递归算法)
4.10.1二叉树建立的非递归实现
4.10.2先序遍历的非递归实现
4.10.3中序遍历的非递归实现
4.10.4后序遍历的非递归实现
4.11二叉树的其他操作
4.11.1统计二叉树的叶子结点数
4.11.2计算二叉树的深度
4.11.3复制一棵二叉树
4.12线索二叉树
4.12.1线索二叉树的定义
4.12.2建立线索二叉树
4.12.3遍历线索二叉树
4.13二叉树的应用: 哈夫曼树与哈夫曼编码
4.14树和森林
4.14.1树和森林的概念
4.14.2树和森林的遍历
4.14.3树的存储表示
4.14.4树、森林与二叉树的转换
习题
第5章搜索树
5.1二分查找判定树
5.2二叉排序树的基本概念
5.3二叉排序树的查找
5.4二叉排序树的插入
5.5二叉排序树的删除
5.6平衡二叉树的概念
5.7平衡二叉树的实例
5.8平衡二叉树的4种调整和两个基本操作
5.9AVL的插入操作
5.10AVL的删除操作
5.11红黑树的基本概念
5.12红黑树的插入
5.13红黑树的删除
习题
第6章图
6.1图的基本概念和抽象数据类型定义
6.1.1图的基本概念
6.1.2图的抽象数据类型定义
6.2图的存储表示
6.2.1邻接矩阵
6.2.2邻接表
6.3图的遍历
6.3.1深度优先搜索
6.3.2广度优先搜索
6.3.3图的连通分支
6.3.4图的层数
6.4Prim算法
6.5Kruskal算法
6.6Dijkstra算法
6.7拓扑排序
6.7.1AOV网
6.7.2拓扑排序算法
6.8关键路径
6.8.1AOE网
6.8.2关键路径算法
6.9六度空间问题
6.10中国邮递员问题
6.10.1问题的引入
6.10.2相关知识点
6.10.3算法流程
6.10.4核心算法设计
6.10.5具体实现
习题
第7章字典
7.1字典的基本概念
7.2跳跃链表的基本概念
7.3跳跃链表的建立和查找
7.3.1空跳跃链表的建立
7.3.2跳跃链表的查找
7.4跳跃链表的插入和删除
7.4.1跳跃链表的插入
7.4.2跳跃链表的删除
7.5散列表的基本概念
7.6散列函数和冲突
7.6.1散列函数
7.6.2生日悖论
7.6.3解决冲突的方法
7.7散列表的建立、查找、插入和删除
7.7.1散列表的建立
7.7.2散列表的查找
7.7.3散列表的插入
7.7.4散列表的删除
7.8Merkle树的基本概念
7.9Merkle树的建立和查找比较
7.9.1Merkle树的建立
7.9.2Merkle树的查找比较
习题
第8章排序
8.1排序的基本概念
8.2插入排序
8.2.1直接插入排序
8.2.2二分插入排序
8.2.3Shell排序
8.3选择排序
8.3.1直接选择排序
8.3.2堆排序
8.4交换排序
8.4.1冒泡排序
8.4.2快速排序
8.5基数排序
8.6归并排序
8.7排序算法的比较
习题
第9章字符串
9.1字符串的基本知识
9.1.1字符串的基本概念
9.1.2串的抽象数据类型定义
9.1.3C库接口
9.1.4正则表达式
9.2朴素的模式匹配算法
9.3KMP算法
9.3.1KMP算法的思想
9.3.2next表的存在性分析
9.3.3构造next表
9.3.4改进next表
9.4Trie树
9.4.1Trie树的基本概念
9.4.2Trie树的基本操作
习题
参考文献
数据结构与算法 pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版