数据结构(C语言描述)

数据结构(C语言描述)

(1 评论)

免费

  • 第1章绪论
  • 1.1数据结构的概念及分类
  • 数据结构测试
  • 1.1.1为什么要学习数据结构
  • 1.1.2与数据结构相关的基本术语
  • 数据结构好几节 敬请期待
  • 数据结构好几节
  • 1.1.3数据结构的分类
  • 1.1.4数据结构的存储结构
  • 1.1.5定义在数据结构上的操作
  • 1.1.6“好”的数据结构
  • 1.2使用C语言描述数据结构
  • 1.2.1C语言的数据类型
  • 1.2.2算法的控制结构
  • 1.2.3算法的函数结构
  • 1.2.4动态存储分配
  • 1.2.5逻辑和关系运算的约定
  • 1.2.6输入与输出
  • 1.3算法和算法设计
  • 1.3.1算法的定义和特性
  • 1.3.2算法的设计步骤
  • 1.3.3算法设计的基本方法
  • 1.4算法分析与度量
  • 1.4.1算法的评价标准
  • 1.4.2算法的时间和空间复杂性度量
  • 1.4.3算法的渐进分析
  • 小结
  • 习题
  • 第2章线性表
  • 2.1线性表
  • 2.1.1线性表的定义和特点
  • 2.1.2线性表的主要操作
  • 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.3.5带头结点的单链表
  • 2.3.6单链表主要操作的性能分析
  • 2.3.7单链表的顺序访问与尾递归
  • 2.3.8单链表的应用举例
  • 2.4顺序表与线性链表的比较
  • 2.5线性链表的其他变形
  • 2.5.1循环链表
  • 2.5.2双向链表
  • 2.5.3静态链表
  • 2.6线性表的应用: 一元多项式及其运算
  • 2.6.1一元多项式的表示
  • 2.6.2多项式的结构定义
  • 2.6.3多项式的加法
  • 2.6.4多项式的乘法
  • 小结
  • 习题
  • 第3章栈和队列
  • 3.1栈
  • 3.1.1栈的概念
  • 3.1.2顺序栈
  • 3.1.3链式栈
  • 3.1.4栈的混洗
  • 3.2队列
  • 3.2.1队列的概念
  • 3.2.2循环队列
  • 3.2.3链式队列
  • 3.3栈的应用
  • 3.3.1数制转换
  • 3.3.2括号匹配
  • 3.3.3表达式的计算与优先级处理
  • 3.3.4栈与递归的实现
  • 3.4队列的应用
  • 3.4.1打印杨辉三角形与逐行处理
  • 3.4.2电路布线与两点间的最短路径
  • 3.5在算法设计中使用递归
  • 3.5.1汉诺塔问题与分治法
  • 3.5.2迷宫问题与回溯法
  • 3.5.3计算组合数与动态规划
  • 3.6双端队列
  • 3.6.1双端队列的概念
  • 3.6.2输入受限的双端队列
  • 3.6.3输出受限的双端队列
  • 3.6.4双端队列的顺序存储表示
  • 3.6.5双端队列的链接存储表示
  • 小结
  • 习题
  • 第4章数组、串和广义表
  • 4.1数组
  • 4.1.1一维数组
  • 4.1.2多维数组
  • 4.1.3数组的应用举例
  • 4.2特殊矩阵的压缩存储
  • 4.2.1对称矩阵的压缩存储
  • 4.2.2三对角矩阵的压缩存储
  • 4.3稀疏矩阵
  • 4.3.1稀疏矩阵的概念
  • 4.3.2稀疏矩阵的三元组表表示
  • 4.3.3稀疏矩阵的十字链表表示
  • 4.4字符串
  • 4.4.1字符串的概念
  • 4.4.2字符串的初始化和赋值
  • 4.4.3C语言中有关字符串的库函数
  • 4.4.4自定义字符串的存储表示
  • 4.4.5串的模式匹配
  • 4.5广义表
  • 4.5.1广义表的概念
  • 4.5.2广义表的性质
  • 4.5.3广义表的链接表示
  • 4.5.4三元多项式的表示
  • 小结
  • 习题
  • 第5章树与二叉树
  • 5.1树的基本概念
  • 5.1.1树的定义和术语
  • 5.1.2树的基本操作
  • 5.2二叉树
  • 5.2.1二叉树的概念
  • 5.2.2二叉树的性质
  • 5.2.3二叉树的主要操作
  • 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二叉树的计数
  • 5.5线索二叉树
  • 5.5.1线索二叉树的概念
  • 5.5.2线索二叉树的种类
  • 5.5.3中序线索二叉树的建立和遍历
  • 5.5.4前序与后序线索二叉树
  • 5.6树与森林
  • 5.6.1树的存储表示
  • 5.6.2森林与二叉树的转换
  • 5.6.3树与森林的深度优先遍历
  • 5.6.4树与森林的广度优先遍历
  • 5.6.5树遍历算法的应用举例
  • 小结
  • 习题
  • 第6章树与二叉树的应用
  • 6.1二叉查找树
  • 6.1.1二叉查找树的概念
  • 6.1.2二叉查找树的查找
  • 6.1.3二叉查找树的插入
  • 6.1.4二叉查找树的删除
  • 6.1.5二叉查找树的性能分析
  • 6.2AVL树
  • 6.2.1AVL树的概念
  • 6.2.2平衡化旋转
  • 6.2.3AVL树的插入
  • 6.2.4AVL树的删除
  • 6.2.5AVL树的性能分析
  • 6.3Huffman树
  • 6.3.1带权路径长度的概念
  • 6.3.2Huffman树的概念
  • 6.3.3最优判定树
  • 6.3.4Huffman编码
  • 6.4堆
  • 6.4.1小根堆和大根堆
  • 6.4.2堆的建立
  • 6.4.3堆的插入
  • 6.4.4堆的删除
  • 6.5并查集
  • 6.5.1并查集的定义及其实现
  • 6.5.2并查集操作的分析和改进
  • 6.6八皇后问题与树的剪枝
  • 6.6.1八皇后问题的提出
  • 6.6.2八皇后问题的状态树
  • 6.6.3八皇后问题算法
  • 小结
  • 习题
  • 第7章图
  • 7.1图的基本概念
  • 7.1.1与图有关的若干概念
  • 7.1.2图的基本操作
  • 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.3.4重连通图
  • 7.3.5有向图的强连通分量
  • 7.4最小生成树
  • 7.4.1最小生成树求解和贪婪法
  • 7.4.2Kruskal算法
  • 7.4.3Prim算法
  • 7.5最短路径
  • 7.5.1非负权重的单源最短路径
  • 7.5.2所有顶点之间的最短路径
  • 7.5.3无权重的最短路径
  • 7.6活动网络
  • 7.6.1AOV网络与拓扑排序
  • 7.6.2AOE网络与关键路径法
  • 小结
  • 习题
  • 第8章查找
  • 8.1查找的基本概念
  • 8.1.1查找的概念
  • 8.1.2查找算法的性能分析
  • 8.2顺序查找法
  • 8.2.1在顺序表上的顺序查找算法
  • 8.2.2在线性链表上的顺序查找算法
  • 8.3折半查找法
  • 8.3.1折半查找法
  • 8.3.2次优查找树: 折半查找的改进方法
  • 8.3.3斐波那契查找: 折半查找的变形
  • 8.3.4插值查找: 折半查找的变形
  • 8.4B树
  • 8.4.1索引顺序表与分块查找
  • 8.4.2多级索引结构与m叉查找树
  • 8.4.3B树的概念
  • 8.4.4B树上的查找
  • 8.4.5B树上的插入
  • 8.4.6B树上的删除
  • 8.4.7B+树
  • 8.5散列表及其查找
  • 8.5.1散列的概念
  • 8.5.2常见的散列函数
  • 8.5.3解决冲突的开地址法
  • 8.5.4解决冲突的链地址法
  • 8.5.5散列法分析
  • 小结
  • 习题
  • 第9章内排序
  • 9.1排序的概念
  • 9.1.1排序的概念
  • 9.1.2排序算法的性能
  • 9.1.3数据表的结构定义
  • 9.2插入排序
  • 9.2.1直接插入排序
  • 9.2.2基于链表的直接插入排序
  • 9.2.3折半插入排序
  • 9.2.4希尔排序
  • 9.3交换排序
  • 9.3.1起泡排序
  • 9.3.2快速排序
  • 9.3.3快速排序的改进算法
  • 9.4选择排序
  • 9.4.1简单选择排序
  • 9.4.2堆排序
  • 9.4.3锦标赛排序
  • 9.5归并排序
  • 9.5.1二路归并排序的设计思路
  • 9.5.2二路归并排序的递归算法
  • 9.5.3基于链表的归并排序算法
  • 9.5.4迭代的归并排序算法
  • 9.6基数排序
  • 9.6.1基数排序
  • 9.6.2MSD基数排序
  • 9.6.3LSD基数排序
  • 9.7内排序算法的分析和比较
  • 9.7.1排序方法的下界
  • 9.7.2分布计数排序
  • 9.7.3各种内排序方法的比较
  • 小结
  • 习题
  • 第10章外排序
  • 10.1主存储器和外存储器
  • 10.1.1磁带
  • 10.1.2磁盘存储器
  • 10.1.3缓冲区
  • 10.2基于磁盘的外排序过程
  • 10.2.1基于磁盘排序的过程
  • 10.2.2基于磁盘排序的性能分析
  • 10.3m路平衡归并
  • 10.3.1m路平衡归并的过程
  • 10.3.2用败者树选最小记录
  • 10.3.3败者树的构造
  • 10.4初始归并段的生成
  • 10.4.1置换-选择排序
  • 10.4.2用败者树实现置换-选择排序
  • 10.4.3用小根堆实现置换-选择排序
  • 10.4.4置换-选择排序的性能分析
  • 10.5最佳归并树
  • 10.6并行操作的缓冲区处理
  • 10.6.1使用固定缓冲区实现并行操作
  • 10.6.2使用缓冲区队列实现并行操作
  • 10.7磁带归并排序
  • 10.7.1平衡归并排序
  • 10.7.2多步归并排序
  • 10.7.3多步归并排序初始归并段的分配
  • 小结
  • 习题
  • 附录A程序索引
  • 附录B实训作业要求与样例
  • 参考文献
  • 测试
  • 免费 测试