内容简介

  《数据结构与算法:C语言版》以C语言为基础讲解数据结构与算法。
  《数据结构与算法:C语言版》共11章,全面介绍了开发中常用的数据结构,包括线性表(顺序表、单链表、双链表、循环链表)、栈和队列、串、数组和广义表、树、图,详细讲解了各种数据结构的实现及常用操作,以及多种查找算法、内部排序算法的原理和实现,简要介绍了文件的相关知识,最后通过一个综合项目对书中介绍的知识进行整合应用,帮助读者了解实际项目开发的流程。
  《数据结构与算法:C语言版》对每种数据结构和算法的剖析都遵循由浅入深的原则,并配以实用的案例和图示,适合具有C语言基础的数据结构初学者,实用性强。
  《数据结构与算法:C语言版》可作为高等院校计算机相关专业数据结构课程的教学参考用书,也可作为培训教材和自学者的学习用书。

目录

第1章数据结构与算法概述
1.1数据结构
1.1.1什么是数据结构
1.1.2数据结构的分类
1.2抽象数据类型
1.3算法
1.3.1什么是算法
1.3.2算法的特性
1.3.3算法的复杂度
1.3.4算法与数据结构
1.4小结
【思考题】

第2章线性表
2.1什么是线性表
2.2线性表的顺序存储(顺序表)
2.2.1顺序存储的原理
2.2.2顺序存储的实现
2.3线性表的链式存储(链表)
2.3.1链式存储的原理
2.3.2链式存储的实现
2.4双链表
2.4.1什么是双链表
2.4.2双链表的实现
2.5循环链表
2.5.1什么是循环链表
2.5.2循环链表的实现
2.5.3约瑟夫环
2.6本章小结
【思考题】

第3章栈和队列
3.1什么是栈
3.2栈的实现
3.2.1栈的顺序存储实现
3.2.2栈的链式存储实现
3.3栈的应用
3.3.1用栈实现四则运算
3.3.2栈的递归应用
3.4什么是队列
3.5队列的实现
3.5.1顺序队列的实现
3.5.2链式队列的实现
3.5.3循环队列
3.6本章小结
【思考题】

第4章串
4.1什么是串
4.2串的存储结构
4.2.1串的顺序存储
4.2.2串的链式存储
4.3串的模式匹配算法
4.3.1朴素的模式匹配
4.3.2KMP算法(无回溯的模式匹配)
4.4本章小结
【思考题】

第5章数组和广义表
5.1数组
5.2矩阵的压缩存储
5.2.1特殊矩阵
5.2.2稀疏矩阵的定义
5.2.3稀疏矩阵的创建
5.2.4稀疏矩阵的转置
5.2.5稀疏矩阵的十字链表表示
5.3广义表
5.3.1广义表的定义
5.3.2广义表的存储结构
5.3.3广义表的递归运算
5.4本章小结
【思考题】

第6章树
6.1树
6.1.1什么是树
6.1.2树的表示法
6.2二叉树
6.2.1什么是二叉树
6.2.2二叉树的分类
6.2.3二叉树的性质
6.3二叉树的存储结构
6.3.1二叉树的顺序存储
6.3.2二叉树的链式存储
6.4二叉树的遍历
6.4.1二叉树的遍历
6.4.2递归思想的应用
6.5二叉树的非递归遍历
6.6二叉树与树、森林之间的转换
6.6.1二叉树与树之间的转换
6.6.2二叉树与森林之间的转换
6.7二叉树的创建
6.7.1中序和先序创建二叉树
6.7.2#号法创建树
6.8线索二叉树
6.8.1什么是线索二叉树
6.8.2二叉树的线索化
6.8.3线索化二叉树的遍历
6.9赫夫曼树
6.9.1什么是赫夫曼树
6.9.2赫夫曼树的构造
6.9.3赫夫曼编码
6.10本章小结
【思考题】

第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.4最小生成树
7.4.1什么是最小生成树
7.4.2Prim算法
7.4.3Kruskal算法
7.5最短路径
7.5.1从源点到其他顶点的最短路径
7.5.2每对顶点的最短路径
7.6拓扑排序
7.7关键路径
7.8本章小结
【思考题】

第8章查找
8.1查找概述
8.2顺序表的查找
8.3有序表的查找
8.3.1折半查找
8.3.2插值查找
8.3.3斐波纳契查找
8.4索引顺序查找
8.5二叉排序树
8.6平衡二叉树
8.6.1平衡二叉树的概念
8.6.2平衡二叉树的插入
8.6.3平衡二叉树的删除
8.7B树
8.7.1B树的概念
8.7.2B树的插入
8.7.3B树的删除
8.8键树
8.9哈希表
8.9.1什么是哈希表
8.9.2哈希函数的构造方法
8.9.3处理哈希冲突
8.9.4哈希表的查找实现
8.10本章小结
【思考题】

第9章内部排序
9.1排序的概念与分类
9.2交换排序
9.2.1冒泡排序
9.2.2快速排序
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.6基数排序
9.6.1基数排序基础
9.6.2链式基数排序
9.7内部排序方法比较
9.8磁盘排序
9.8.1外部存储设备
9.8.2磁盘排序分析
9.8.3置换-选择排序
9.8.4多路平衡归并
9.8.5最佳归并树
9.9本章小结
【思考题】

第10章文件
10.1文件概述
10.2顺序文件和索引文件
10.2.1顺序文件
10.2.2索引文件
10.3ISAM文件和VSAM文件
10.3.1ISAM文件
10.3.2VSAM文件
10.4哈希文件
10.5多关键字文件
10.5.1多重表文件
10.5.2倒排文件
10.6本章小结
【思考题】

第11章综合项目——贪吃蛇
11.1项目分析
11.1.1模块设计
11.1.2模块描述
11.1.3项目分析
11.2项目实现
11.2.1创建项目
11.2.2项目设计
11.2.3项目实现
11.2.4主函数实现
11.2.5效果展示
11.3项目心得
【思考题】

前言/序言

  随着计算机科学与技术的不断发展,计算机的应用领域已不再局限于科学计算,而更多地应用于控制、管理等非数值处理领域。与此相应,计算机处理的数据也由纯粹的数值发展到字符、表格、图形、图像、声音等具有一定结构的数据,处理的数据量也越来越大,这就需要考虑如何来组织数据与数据之间的关系,即数据结构。特别是随着大数据时代的到来,信息范围的拓宽和信息结构复杂度的加深,为了编写出高质量的程序,必须分析这些信息的特征以及它们之间存在的关系,选择合适的数据处理方式。程序设计的实质就是为确定的问题选择一种适当的数据结构并设计一个好的算法。为什么要学习数据结构与算法
  数据结构是计算机专业中的一门专业基础课,开设计算机专业的学校都要开设数据结构课程。数据结构不仅涉及计算机硬件,还和计算机软件的研究有着密切的关系,所有的计算机系统软件和应用软件都要用到各种类型的数据结构和算法。因此,想要更有效地通过编程解决实际问题,仅掌握几种计算机程序设计语言是远远不够的,还必须学好数据结构与算法的相关知识。打好“数据结构与算法”这门课程的扎实基础,对于学习计算机的其他课程,如操作系统、数据库管理系统、软件工程、编绎原理、人工智能等都十分有益。如何使用《数据结构与算法:C语言版
  《数据结构与算法:C语言版》面向具有C语言基础的读者。《数据结构与算法:C语言版》的同系列教材包括《C语言开发入门教程》《C语言程序设计教程>,请读者学习过以上C语言的课程后再使用本教材学习。
  《数据结构与算法:C语言版》以企业开发中使用的VisualStudi02013为开发工具,以C语言为基础讲解数据结构与算法。在整体布局上采用从线性的表到非线性的树,再到错综复杂的图,一步步由浅入深;在学习数据结构时穿插讲解所使用到的算法。在学习完数据结构后,又独立出两章(第8章、第9章)讲解实际开发中常用的算法,这样的布局能让读者更好地在整体上把握数据结构与算法学习的方法。
  《数据结构与算法:C语言版》知识覆盖面广,增加了其他教材没有讲述,而在实际开发中常用的知识技术,如循环链表、优先队列、二叉树创建、磁盘排序、哈希文件等,目前市面上几乎没有全面覆盖这些知识的教材,《数据结构与算法:C语言版》为了让初学者与实际开发更好地接轨,对这些知识都进行了讲解。
  在讲解时,每一种数据结构都遵循“概念一存储原理(配结构分析图)一基本操作原理及实现(配演示图)一完整代码(调试)”的规则I语言通俗易懂,并在难理解处配有相应图示辅助讲解。每一种数据结构在讲解基本操作时均采用以案例引领的教学法,学习完就会实现一个具有基本操作的完整数据结构,可作为封装好的数据结构使用,例如,在后面几章的学习中会使用到前面实现的数据结构;在配套的教学案例中也都是直接调用教材中实现好的数据结构。因此教材的实用性较强。
  每一种算法都是遵循“算法思想分析一算法实现一算法复杂度分析一算法改进”的规则,对每一个算法都结合具体案例分析其算法复杂度,力求最优算法。
  整体来说,本教材真正遵循了由浅人深、由易到难的学习规律,更适合数据结构初学者使用,让初学者能具备数据分析、数据组织、数据构造的能力。

其他推荐