数据结构(慕课版) / 普通高等院校应用型人才培养“十四五”系列教材
¥48.00定价
作者: 丁峻岭
出版时间:2023-12
出版社:中国铁道出版社
- 中国铁道出版社
- 9787113305666
- 1版
- 521455
- 48256943-1
- 16开
- 2023-12
- 计算机及相关专业
- 本科
作者简介
内容简介
本书是“普通高等院校应用型人才培养‘十四五’系列教材”之一,根据教育部高等学校计算机类专业教学指导委员会编制的《智能时代计算机专业系统能力培养纲要》编写。全书紧扣当前普通高等院校“数据结构”课程的现状和发展趋势,内容难易适中,突出实用性和应用性,特别注重引导学生把基础知识和理论转化为实际应用能力,配套资源丰富。本书采用易于学习和使用的C语言来描述算法,并加以详细的注释,重点知识配备了二维码视频讲解。全书共9章,主要包括线性表、栈和队列、串、数组和广义表、树和二叉树、图、查找及排序等内容。全书所附源程序全部使用C语言在Microsoft Visual C++60环境下调试运行成功。本书适合作为普通高等院校计算机及相关专业“数据结构”课程的教材,也可作为计算机等级考试培训用书。
目录
第1章绪论
1.1数据结构概述
1.1.1关于非数值计算的程序设计问题
1.1.2程序设计的实质
1.1.3数据结构课程的内容
1.1.4程序设计的一般过程1.2基本概念和术语
1.2.1数据、数据元素、数据项和数据对象
1.2.2数据的逻辑结构
1.2.3数据的存储结构
1.2.4数据类型1.3抽象数据类型的表示与实现1.4算法和算法分析
1.4.1算法
1.4.2算法设计的要求
1.4.3算法效率的度量小结练习
第2章线性表
2.1线性表的基本概念
2.1.1线性表的定义
2.1.2线性表的抽象数据类型
2.1.3利用线性表的基本运算实现线性表的运算
2.2线性表的顺序表示和实现
2.2.1顺序表
2.2.2基本运算在顺序表上的实现
2.2.3顺序实现的算法分析
2.2.4顺序表的优缺点
2.2.5顺序表的综合应用
2.3线性表的链式表示和实现
2.3.1单链表
2.3.2单链表的简单操作
2.3.3基本运算在单链表上的实现
2.3.4单链表的综合应用
2.4静态链表与循环链表
2.4.1静态链表
2.4.2基本运算在静态单链表上的实现
2.4.3静态链表的综合应用
2.4.4循环链表
2.4.5双链表小结练习
第3章栈和队列
3.1栈
3.1.1栈的基本概念
3.1.2栈的顺序实现
3.1.3顺序栈的基本运算
3.1.4顺序栈综合应用
3.1.5栈的链式实现
3.1.6栈的基本运算在链栈上的实现
3.1.7链栈综合应用
3.2使用栈对表达式求值
3.2.1表达式求值
3.2.2表达式求值算法
3.3栈与递归的实现
3.3.1子程序调用
3.3.2递归3.4队列
3.4.1队列的基本概念
3.4.2队列的顺序实现
3.4.3在循环队列上实现队列的基本运算
3.4.4顺序表循环队列综合应用
3.4.5队列的链式实现
3.4.6在链队上实现队列的基本运算
3.4.7链队综合应用小结练习
第4章串
4.1串的类型定义及基本操作
4.1.1串的基本概念
4.1.2串的抽象数据类型
4.2串的存储实现
4.2.1串的顺序存储
4.2.2堆分配存储表示
4.2.3串的链式存储
4.3串的模式匹配算法
4.3.1BF算法
4.3.2KMP算法小结练习
第5章数组和广义表5.1数组及其基本操作
5.2数组的顺序表示和实现5.3矩阵的压缩存储
5.3.1特殊矩阵
5.3.2稀疏矩阵
5.4广义表
5.4.1广义表的定义
5.4.2广义表的两个特殊运算
5.4.3广义表的图示表示
5.4.4广义表的三个性质
5.4.5广义表的存储结构小结练习
第6章树和二叉树
6.1树的定义和基本术语
6.2二叉树
6.2.1二叉树的基本概念
6.2.2二叉树的性质
6.2.3二叉树的存储结构
6.3遍历二叉树
6.3.1遍历二叉树
6.3.2在二叉链表上实现遍历的递归算法
6.3.3在二叉链表上实现遍历的非递归算法
6.3.4在二叉链表上建立二叉树
6.3.5二叉树的其他基本运算
6.4恢复二叉树
6.5线索二叉树
6.5.1保存在遍历过程中得到的信息
6.5.2线索化
6.5.3在线索树中找结点的前、后继
6.5.4对二叉树进行线索化
6.5.5遍历线索二叉树
6.6标识符树与表达式
6.7树和森林
6.7.1树的存储结构
6.7.2森林与二叉树的转换
6.7.3树和森林的遍历
6.7.4森林结点数、边数与树个数的关系
6.8哈夫曼树及其应用
6.8.1最优二叉树(哈夫曼树)
6.8.2哈夫曼编码小结练习
第7章图
7.1图的基本概念
7.1.1有向图、无向图
7.1.2路径和回路
7.1.3无向图的连通性
7.1.4有向图的连通性
7.1.5生成树和生成森林
7.1.6图的类型定义
7.2图的存储结构
7.2.1邻接矩阵
7.2.2邻接表
7.2.3十字链表
7.2.4邻接多重表
7.3图的遍历
7.3.1连通图的深度优先搜索
7.3.2连通图的广度优先搜索
7.3.3非连通图的生成森林
7.4最小生成树
7.4.1Prim算法
7.4.2Kruskal算法
7.5拓扑排序
7.5.1AOV网
7.5.2拓扑排序
7.5.3拓扑排序过程
7.5.4拓扑排序算法
7.6最短路径
7.6.1Dijkstra算法
7.6.2Floyd算法
7.7关键路径
7.7.1AOE网
7.7.2关键路径小结练习
第8章查找
8.1查找的基本概念
8.2静态查找表
8.2.1顺序查找
8.2.2二分查找
8.2.3分块查找
8.3动态查找表
8.3.1二叉排序树
8.3.2平衡二叉树
8.4B-树和B+树
8.4.1B-树定义
8.4.2对B-树的操作
8.4.3B+树
8.5哈希表
8.5.1哈希表与哈希方法
8.5.2哈希函数的构造方法
8.5.3处理冲突的方法小结练习
第9章排序
9.1概述
9.2插入排序
9.2.1直接插入排序
9.2.2二分插入排序
9.2.3希尔排序
9.3交换排序
9.3.1冒泡排序
9.3.2快速排序
9.4选择排序
9.4.1简单选择排序
9.4.2树形选择排序
9.4.3堆排序
9.5归并排序
9.6基数排序
9.6.1桶排序
9.6.2基数排序
9.6.3链式基数排序小结练习
1.1数据结构概述
1.1.1关于非数值计算的程序设计问题
1.1.2程序设计的实质
1.1.3数据结构课程的内容
1.1.4程序设计的一般过程1.2基本概念和术语
1.2.1数据、数据元素、数据项和数据对象
1.2.2数据的逻辑结构
1.2.3数据的存储结构
1.2.4数据类型1.3抽象数据类型的表示与实现1.4算法和算法分析
1.4.1算法
1.4.2算法设计的要求
1.4.3算法效率的度量小结练习
第2章线性表
2.1线性表的基本概念
2.1.1线性表的定义
2.1.2线性表的抽象数据类型
2.1.3利用线性表的基本运算实现线性表的运算
2.2线性表的顺序表示和实现
2.2.1顺序表
2.2.2基本运算在顺序表上的实现
2.2.3顺序实现的算法分析
2.2.4顺序表的优缺点
2.2.5顺序表的综合应用
2.3线性表的链式表示和实现
2.3.1单链表
2.3.2单链表的简单操作
2.3.3基本运算在单链表上的实现
2.3.4单链表的综合应用
2.4静态链表与循环链表
2.4.1静态链表
2.4.2基本运算在静态单链表上的实现
2.4.3静态链表的综合应用
2.4.4循环链表
2.4.5双链表小结练习
第3章栈和队列
3.1栈
3.1.1栈的基本概念
3.1.2栈的顺序实现
3.1.3顺序栈的基本运算
3.1.4顺序栈综合应用
3.1.5栈的链式实现
3.1.6栈的基本运算在链栈上的实现
3.1.7链栈综合应用
3.2使用栈对表达式求值
3.2.1表达式求值
3.2.2表达式求值算法
3.3栈与递归的实现
3.3.1子程序调用
3.3.2递归3.4队列
3.4.1队列的基本概念
3.4.2队列的顺序实现
3.4.3在循环队列上实现队列的基本运算
3.4.4顺序表循环队列综合应用
3.4.5队列的链式实现
3.4.6在链队上实现队列的基本运算
3.4.7链队综合应用小结练习
第4章串
4.1串的类型定义及基本操作
4.1.1串的基本概念
4.1.2串的抽象数据类型
4.2串的存储实现
4.2.1串的顺序存储
4.2.2堆分配存储表示
4.2.3串的链式存储
4.3串的模式匹配算法
4.3.1BF算法
4.3.2KMP算法小结练习
第5章数组和广义表5.1数组及其基本操作
5.2数组的顺序表示和实现5.3矩阵的压缩存储
5.3.1特殊矩阵
5.3.2稀疏矩阵
5.4广义表
5.4.1广义表的定义
5.4.2广义表的两个特殊运算
5.4.3广义表的图示表示
5.4.4广义表的三个性质
5.4.5广义表的存储结构小结练习
第6章树和二叉树
6.1树的定义和基本术语
6.2二叉树
6.2.1二叉树的基本概念
6.2.2二叉树的性质
6.2.3二叉树的存储结构
6.3遍历二叉树
6.3.1遍历二叉树
6.3.2在二叉链表上实现遍历的递归算法
6.3.3在二叉链表上实现遍历的非递归算法
6.3.4在二叉链表上建立二叉树
6.3.5二叉树的其他基本运算
6.4恢复二叉树
6.5线索二叉树
6.5.1保存在遍历过程中得到的信息
6.5.2线索化
6.5.3在线索树中找结点的前、后继
6.5.4对二叉树进行线索化
6.5.5遍历线索二叉树
6.6标识符树与表达式
6.7树和森林
6.7.1树的存储结构
6.7.2森林与二叉树的转换
6.7.3树和森林的遍历
6.7.4森林结点数、边数与树个数的关系
6.8哈夫曼树及其应用
6.8.1最优二叉树(哈夫曼树)
6.8.2哈夫曼编码小结练习
第7章图
7.1图的基本概念
7.1.1有向图、无向图
7.1.2路径和回路
7.1.3无向图的连通性
7.1.4有向图的连通性
7.1.5生成树和生成森林
7.1.6图的类型定义
7.2图的存储结构
7.2.1邻接矩阵
7.2.2邻接表
7.2.3十字链表
7.2.4邻接多重表
7.3图的遍历
7.3.1连通图的深度优先搜索
7.3.2连通图的广度优先搜索
7.3.3非连通图的生成森林
7.4最小生成树
7.4.1Prim算法
7.4.2Kruskal算法
7.5拓扑排序
7.5.1AOV网
7.5.2拓扑排序
7.5.3拓扑排序过程
7.5.4拓扑排序算法
7.6最短路径
7.6.1Dijkstra算法
7.6.2Floyd算法
7.7关键路径
7.7.1AOE网
7.7.2关键路径小结练习
第8章查找
8.1查找的基本概念
8.2静态查找表
8.2.1顺序查找
8.2.2二分查找
8.2.3分块查找
8.3动态查找表
8.3.1二叉排序树
8.3.2平衡二叉树
8.4B-树和B+树
8.4.1B-树定义
8.4.2对B-树的操作
8.4.3B+树
8.5哈希表
8.5.1哈希表与哈希方法
8.5.2哈希函数的构造方法
8.5.3处理冲突的方法小结练习
第9章排序
9.1概述
9.2插入排序
9.2.1直接插入排序
9.2.2二分插入排序
9.2.3希尔排序
9.3交换排序
9.3.1冒泡排序
9.3.2快速排序
9.4选择排序
9.4.1简单选择排序
9.4.2树形选择排序
9.4.3堆排序
9.5归并排序
9.6基数排序
9.6.1桶排序
9.6.2基数排序
9.6.3链式基数排序小结练习