内容简介
本书由浅入深地介绍了数据结构中常用的线性表、树、图、查找和排序等相关内容,幵以程序设计为主线,结合计算机思维,通过应用案例详细描述数据结构的使用及典型算法设计实施过程。
全书分为7章,涵盖了各种常见数据结构及典型算法应用。另外,每章后面附有习题,同时书中实例及习题均提供了完整的、可运行的程序代码供读者参考,以加深读者对所学知识的理解和应用。
本书既可作为高等院校数据结构及算法课程的辅助用书,也可作为从事计算机相关行业工作的广大读者的参考书。
目录
前言
第1章绪论
1.1数据结构
1.1.1逻辑结构
1.1.2存储结构
1.2算法
1.2.1算法的定义
1.2.2算法分析
1.3常用的算法
1.3.1穷举法
1.3.2贪婪法
1.3.3递推法
1.3.4递归法
1.3.5分治法
1.3.6回溯法
习题
第2章线性表
2.1线性表存储及基本操作
2.1.1顺序表及基本操作
2.1.2单链表及基本操作
2.1.3单向循环链表及基本操作
2.1.4双向链表及基本操作
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.4.3表达式计算
2.4.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.2稀疏矩阵及压缩存储
3.3稀疏矩阵压缩存储的应用
3.3.1稀疏矩阵的转置
3.3.2稀疏矩阵的乘法运算
3.4字符串
3.4.1基本概念
3.4.2字符串的基本操作
3.5字符串的模式匹配
3.5.1简单匹配算法
3.5.2KMP算法
3.5.3Sunday算法
3.5.4ShiftAnd算法
3.5.5字符串模式匹配应用
习题
第4章树和二叉树
4.1树
4.1.1树的定义和基本术语
4.1.2树的存储方法
4.1.3树的性质
4.1.4表达式树
4.2二叉树
4.2.1二叉树的基本概念
4.2.2二叉树的性质
4.2.3满二叉树和完全二叉树
4.2.4二叉树的存储
4.2.5二叉树的遍历
4.2.6二叉树的构建及操作
4.3线索二叉树
4.4二叉树的应用
4.4.1计算二叉树的高度
4.4.2后缀表达式的转换
4.4.3哈夫曼树及编码
习题
第5章图
5.1图的定义和基本术语
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拓扑排序和关键路径
习题
第6章查找
6.1线性查找
6.1.1顺序查找
6.1.2对分查找
6.1.3斐波那契查找
6.1.4分块查找
6.2树表查找
6.2.1二叉排序树
6.2.2平衡二叉树
6.3哈希表
6.3.1哈希表概念
6.3.2哈希函数构造方法
6.3.3哈希表解决冲突的方法
习题
第7章排序
7.1基本概念
7.2冒泡排序和快速排序
7.3插入排序和希尔排序
7.4选择排序和堆排序
7.5归并排序和基数排序
习题
参考文献
前言/序言
随着人工智能的发展,各专业对计算机程序和算法的相关知识需求日益增加,但现阶段,大多数普通高校非计算机科学专业工科学生的软件编程和算法学习仅有“C语言程序设计”等少量相关课程,程序设计和算法应用能力有待提高。而数据结构和算法设计作为大学计算机科学专业的必修课程,能够使学生掌握计算机思维和程序设计的基本方法,同时又是算法设计和应用实现的重要基础,但其中部分知识对于非计算机专业学生较为抽象。为了更好地提高工科专业学生的程序设计及算法应用实践能力,适应当前社会对应用型人才的培养需求,特结合非计算机专业工科学生的基础现状编写了本书。
本书面向非计算机专业工科学生,在具备C语言语法知识和一定编程能力的基础上,由浅入深地介绍了数据结构中常用的线性表、树、图、查找和排序等相关内容及典型算法应用,并以程序设计为主线,结合计算机思维,本着有用及实用的原则,补充应用案例。应用案例以数据结构为支撑,详细描述算法设计的实施过程,从而达到问题的提出、数据结构的合理采用、算法应用及程序实现的整体锻炼,培养读者从数据结构和算法的理论掌握到程序设计编写的应用能力。
本书共7章,各章内容如下:
第1章为绪论,介绍数据结构和算法的基本概念及6种常用算法。
第2章为线性表,介绍线性表在顺序存储和链式存储下的基本操作及应用,两种特殊的线性表,栈和队列的存储方式、基本操作及应用。
第3章为线性表扩展,介绍特殊矩阵压缩存储及应用,字符串的操作和模式匹配算法。
第4章为树和二叉树,介绍树和二叉树的相关概念、存储方式、基本操作和应用。
第5章为图,介绍图的相关概念、存储方式、基本操作和应用。
第6章为查找,介绍线性查找、树表查找和哈希表的相关概念及典型应用算法。
第7章为排序,介绍8种常用的排序算法。
本书结合非计算机专业本科生后续学习及实践需求,精简了原数据结构的部分概念描述和内容,同时在典型数据结构操作的基础上补充了应用实例,所有实例均采用C语言编写,编译工具为DEVC++。通过将应用实例的实现过程与数据结构相关定义结合,使读者可以方便地了解数据结构在实例中的使用方式,结合算法设计让读者得到更好的锻炼。
本书由王通、侯延彬、魏晶亮编著,各章编写分工如下:第1~3章由沈阳工业大学电气工程学院王通编写;第4章和第6章由沈阳工业大学信息科学与工程学院侯延彬编写;第5章和第7章由沈阳工业大学人工智能学院魏晶亮编写。
本书编写过程中参考了一些同类教材和网络资源,在此表示感谢。本书提供包括各章教学PPT和书中案例及习题的全部源代码,可供读者下载并使用。本书作者均从事本科教学工作多年,但由于水平有限,不足之处敬请广大读者批评指正。
作者
2025年1月于沈阳工业大学