新書推薦:
《
新经济史革命:计量学派与新制度学派
》
售價:HK$
89.7
《
盗墓笔记之秦岭神树4
》
售價:HK$
57.3
《
战胜人格障碍
》
售價:HK$
66.7
《
逃不开的科技创新战争
》
售價:HK$
103.3
《
漫画三国一百年
》
售價:HK$
55.2
《
希腊文明3000年(古希腊的科学精神,成就了现代科学之源)
》
售價:HK$
82.8
《
粤行丛录(岭南史料笔记丛刊)
》
售價:HK$
80.2
《
岁月待人归:徐悲鸿自述人生艺术
》
售價:HK$
61.4
|
編輯推薦: |
本书全面、系统地介绍了数据结构相关内容,通过丰富的案例讲解算法的多种实现,所有算法程序均采用Java语言实现。
|
內容簡介: |
本书全面、系统地介绍了数据结构相关内容,包括各种数据结构的逻辑关系、存储结构及基本运算,通过丰富的案例讲解了算法的多种实现,所有算法程序均采用Java语言实现。 本书共8章,主要内容包括数据结构基础,线性表,栈和队列,串、数组和广义表,树和二叉树,图,查找,排序。本书内容全面,理论与实践并重,通过大量图表和案例讲解算法实现过程,方便读者理解、掌握。本书内容安排符合本科生培养目标和教育工程认证要求,在知识的讲解过程中注重思政元素的融入,并提供微课视频、教学课件、课后习题、实验题等丰富的教学资源。 本书适合作为高等院校计算机、软件工程等相关专业本科生数据结构课程的教材,也可供从事软件开发的工程技术人员作为参考书。
|
目錄:
|
第1章数据结构基础
1.1数据结构相关概念
1.2抽象数据类型
1.2.1抽象数据类型的定义
1.2.2抽象数据类型的描述
1.3数据的逻辑结构与存储结构
1.3.1逻辑结构
1.3.2存储结构
1.4算法的特性与算法的描述
1.4.1算法的定义
1.4.2算法的特性
1.4.3算法的描述
1.5算法分析
1.5.1算法设计的要求
1.5.2算法时间复杂度
1.5.3算法空间复杂度
1.6关于数据结构课程的地位及学习方法
小结
习题
第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.4循环单链表
2.4.1循环单链表的链式存储
2.4.2循环单链表应用示例
2.5双向链表
2.5.1双向链表的存储结构
2.5.2双向链表的插入和删除操作
2.5.3双向链表应用示例
2.6综合案例: 一元多项式的表示与相加
2.6.1一元多项式的表示
2.6.2一元多项式相加
2.7实验
2.7.1基础实验
2.7.2综合实验
小结
习题
第3章栈和队列
3.1栈
3.1.1栈的基本概念
3.1.2栈的抽象数据类型
3.1.3栈的顺序表示与实现
3.1.4栈的链式表示与实现
3.1.5栈的典型应用
3.2栈与递归
3.2.1设计递归算法
3.2.2分析递归调用过程
3.2.3消除递归
3.3队列
3.3.1队列的定义及抽象数据类型
3.3.2队列的顺序存储及实现
3.3.3队列的链式存储及实现
3.4双端队列
3.4.1双端队列的定义
3.4.2双端队列的应用
3.5实验
3.5.1基础实验
3.5.2综合实验
小结
习题
第4章串、数组与广义表
4.1串的定义及抽象数据类型
4.1.1串的定义
4.1.2串的抽象数据类型
4.2串的存储表示
4.2.1串的顺序存储结构
4.2.2串的链式存储结构
4.2.3顺序串应用示例
4.3串的模式匹配
4.3.1朴素模式匹配算法——BruteForce算法
4.3.2KMP算法
4.3.3模式匹配应用示例
4.4数组
4.4.1数组的定义
4.4.2数组的顺序存储结构
4.4.3特殊矩阵的压缩存储
4.4.4稀疏矩阵的压缩存储
4.5广义表
4.5.1广义表的定义
4.5.2广义表的抽象数据类型
4.5.3广义表的头尾链表表示
4.5.4广义表的扩展线性链表表示
4.6实验
4.6.1基础实验
4.6.2综合实验
小结
习题
第5章树和二叉树
5.1树
5.1.1树的定义
5.1.2树的逻辑表示
5.1.3树的抽象数据类型
5.2二叉树
5.2.1二叉树的定义
5.2.2二叉树的性质
5.2.3二叉树的抽象数据类型
5.2.4二叉树的存储表示
5.3二叉树的遍历
5.3.1二叉树遍历的定义
5.3.2二叉树的先序遍历
5.3.3二叉树的中序遍历
5.3.4二叉树的后序遍历
5.4二叉树的线索化
5.4.1二叉树的线索化定义
5.4.2二叉树的线索化算法实现
5.4.3线索二叉树的遍历
5.4.4线索二叉树的应用示例
5.5树、森林与二叉树
5.5.1树的存储结构
5.5.2树转换为二叉树
5.5.3森林转换为二叉树
5.5.4二叉树转换为树或森林
5.5.5树和森林的遍历
5.6并查集
5.6.1并查集的定义
5.6.2并查集的实现
5.6.3并查集的应用示例
5.7二叉树的典型应用
5.7.1哈夫曼树及其应用
5.7.2利用二叉树求解算术表达式的值
5.8实验
5.8.1基础实验
5.8.2综合实验
小结
习题
第6章图
6.1图的定义与相关概念
6.1.1图的定义
6.1.2图的相关概念
6.1.3图的抽象数据类型
6.2图的存储结构
6.2.1邻接矩阵表示法
6.2.2邻接表表示法
6.2.3十字链表表示法
6.2.4邻接多重表表示法
6.3图的遍历
6.3.1图的深度优先遍历
6.3.2图的广度优先遍历
6.4图的连通性问题
6.4.1无向图的连通分量与生成树
6.4.2最小生成树
6.5有向无环图
6.5.1AOV网与拓扑排序
6.5.2AOE网与关键路径
6.6最短路径
6.6.1从某个顶点到其他顶点的最短路径
6.6.2任意两个顶点之间的最短路径
6.7图的应用示例
6.7.1距离某个顶点的最短路径长度为k的所有顶点
6.7.2求图中顶点u到顶点v的简单路径
6.8实验
6.8.1基础实验
6.8.2综合实验
小结
习题
第7章查找
7.1查找的基本概念
7.2静态查找
7.2.1顺序表的查找
7.2.2有序顺序表的查找
7.2.3索引顺序表的查找
7.3动态查找
7.3.1二叉排序树
7.3.2平衡二叉树
7.3.3红黑树
7.4B-树与B 树
7.4.1B-树
7.4.2B 树
7.5哈希表
7.5.1哈希表的定义
7.5.2哈希函数的构造方法
7.5.3处理冲突的方法
7.5.4哈希表查找与分析
7.5.5哈希表应用示例
7.6实验
7.6.1基础实验
7.6.2综合实验
小结
习题
第8章排序
8.1排序的基本概念
8.2插入排序
8.2.1直接插入排序
8.2.2折半插入排序
8.2.3希尔排序
8.2.4插入排序应用示例
8.3选择排序
8.3.1简单选择排序
8.3.2堆排序
8.4交换排序
8.4.1冒泡排序
8.4.2快速排序
8.4.3交换排序应用示例
8.5归并排序
8.6基数排序
8.6.1基数排序算法
8.6.2基数排序应用示例
8.7实验
8.7.1基础实验
8.7.2综合实验
小结
习题
参考文献
|
內容試閱:
|
党的二十大报告中指出: 教育、科技、人才是全面建设社会主义现代化国家的基础性、战略性支撑。必须坚持科技是第一生产力、人才是第一资源、创新是第一动力,深入实施科教兴国战略、人才强国战略、创新驱动发展战略,这三大战略共同服务于创新型国家的建设。高等教育与经济社会发展紧密相连,对促进就业创业、助力经济社会发展、增进人民福祉具有重要意义。
数据结构是一门实践性很强的课程,是今后学习其他专业课程和从事软件开发的重要基础。对于初学者来说,数据结构中的概念比较抽象,需要结合生活实际进行理解。学习数据结构不只是要理解并掌握各种数据类型所涉及的相关算法思想,更重要的是要将这些算法思想用Java、C或Python等语言实现,只有这样才能真正理解并掌握数据结构。因此,学习数据结构需要至少掌握一门高级程序语言。
Java语言不仅具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性等众多特点,而且吸收了C 语言的各种优点,同时摒弃了C 中难以理解的多继承、指针等概念,极好地实现了面向对象理论。Java语言允许程序员以优雅的思维方式进行复杂的编程,是编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等的首选开发语言。国内各高校均开设了Java语言程序设计课程,因此本书采用Java语言作为描述语言,为读者今后从事软件开发打下牢固的基础。
本书较为系统地介绍了数据结构中的线性结构、树结构、图结构及查找、排序技术,阐述了各种数据结构的逻辑关系,讨论了它们在计算机中的存储表示及运算。本书以潜移默化的形式融入思政元素,理论与实践并重,除了对数据结构中的抽象概念和数据类型的基本运算进行详细讲解外,还通过丰富的图表、实例和完整的代码讲解算法的应用,帮助读者理解各种数据类型常见的基本操作及具体应用案例的算法思想。本书精选了一些涵盖知识点丰富且具有代表性的案例,并挑选了部分历年考研试题作为课后习题,所有算法均采用Java语言给出完整实现,方便读者学习和理解,进而巩固所学知识点。
本书共分为8章,分别为数据结构基础,线性表,栈与队列,串、数组与广义表,树和二叉树,图,查找和排序。
第1章: 主要介绍数据结构的基本概念和对算法的描述方法,以及本书的学习目标、学习方法和学习内容。
第2章: 主要介绍线性表。首先讲解线性表的逻辑结构,然后介绍线性表的各种常用存储结构,每节均给出了算法的具体应用。通过学习这一章,读者可以掌握顺序表、动态链表的基本操作及应用。
第3章: 主要介绍操作受限的线性表——栈和队列,内容包括栈的定义,栈的基本操作,栈与递归的转化,队列的概念,顺序队列和链式队列的运算。
第4章: 主要介绍串、数组与广义表。串是另一种特殊的线性表,数组和队列可以看作是线性表的推广。首先介绍串的概念、串的各种存储表示和串的模式匹配算法,然后介绍数组的概念、数组(矩阵)的存储结构及运算、特殊矩阵,最后介绍广义表的概念、表示与存储方式。
第5章: 主要介绍非线性数据结构——树和二叉树。首先介绍树和二叉树的概念,然后介绍树和二叉树的存储表示、二叉树的性质、二叉树的遍历和线索化、树和森林与二叉树的转换、并查集及哈夫曼树。
第6章: 主要介绍非线性数据结构——图。首先介绍图的概念和存储结构,然后介绍图的遍历、最小生成树、拓扑排序、关键路径及最短路径。
第7章: 主要介绍数据结构的常用技术——查找。首先介绍查找的概念,然后结合具体实例介绍了静态查找、二叉排序树、平衡二叉树、红黑树、B-树和B 树、哈希表,并给出了完整程序。
第8章: 主要介绍数据结构的常用技术——排序。首先介绍排序的相关概念,然后介绍各种排序技术,并给出了具体实现算法。
本书教学内容紧紧围绕《高等学校计算机专业核心课程教学实施方案》和《计算机学科硕士研究生入学考试大纲》,涵盖教学方案和考研大纲要求的全部知识点。本书系作者多年教学实践经验总结,主要特点如下:
(1) 结构清晰,内容全面。针对抽象的概念和知识点,配合类比和丰富的图表进行讲解。
(2) 例题典型、丰富。例题选取自全国著名高校考研试题和竞赛试题,给出了详细的分析和完整算法实现。
(3) 理论与实践并重,突出实践。在讲解抽象概念和算法思想时,每个算法都给出了具体的Java语言实现,每章均提供了综合案例算法的详细讲解。
为便于教学,本书提供丰富的配套资源,包括教学大纲、教学课件、电子教案、程序源码、习题答案、在线作业和微课视频。
资源下载提示
数据文件等资源: 扫描目录上方的二维码下载。
在线作业: 扫描封底的作业系统二维码,登录网站在线做题及查看答案。
数据结构(Java语言实现·题库·微课视频版)
前言
微课视频: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的视频讲解二维码,可以在线学习。
本书由陈锐、马军霞、蔡增玉、马欢、朱亮、赵晓君、李朝阳、蒋昌猛、王超共同编著,感谢郑州轻工业大学全体同仁在工作上的帮助及在写作上的关心与支持。
在此尤其感谢清华大学出版社的魏江江编辑,他十分看重本书的应用价值,在他的策划下,本书才得以顺利出版,对此深怀感激。葛鹏程编辑为本书的出版付出了巨大努力,在此一并表示衷心的感谢。
在本书的编写过程中,参阅了大量相关教材、著作,个别案例也参考了网络资源,在此向各位原著者致敬!
由于编写时间仓促,加之水平所限,书中难免存在一些不足之处,恳请读者不吝赐教。
编者2023年7月
|
|