新書推薦:
《
东亚世界形成史论(新版)
》
售價:NT$
490.0
《
奶奶的半个心愿 “课本里的作家” 中考热点作家孙道荣2024年全新散文集
》
售價:NT$
190.0
《
天生坏种:罪犯与犯罪心理分析
》
售價:NT$
445.0
《
新能源材料
》
售價:NT$
290.0
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
《
无法从容的人生:路遥传
》
售價:NT$
340.0
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
|
編輯推薦: |
贴近当前普通高等院校“数据结构”课程的现状和发展趋势,内容难度适度,实用性和应用性突出。
|
內容簡介: |
本书在选材与编排上,贴近当前普通高等院校“数据结构”课程的现状和发展趋势,内容难度适度,突出实用性和应用性。在内容选取与结构上,本书并未对各种数据结构面面俱到,而是通过分类和讲解典型结构,使读者形成对数据结构的宏观认识。根据内容侧重,本书共8章,分别为绪论、线性表、栈和队列、串和数组、树结构、图、排序和查找。 本书是高等院校计算机科学、软件工程及相关专业“数据结构”课程的理想教材,也可供程序员、系统工程师等相关人员阅读参考。
|
目錄:
|
第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.4Java提供的泛型方法
1.4.1使用Object类表示泛型
1.4.2使用Comparable接口类型表示泛型
小结
习题1
第2章线性表
2.1线性表及其基本操作
2.1.1线性表的基本概念
2.1.2抽象数据类型描述
2.1.3线性表的存储和实现
2.2线性表的顺序存储
2.2.1顺序表
2.2.2顺序表的基本操作实现
2.3线性表的链式存储和实现
2.3.1单链表
2.3.2单链表的基本操作实现
2.3.3其他链表
2.4顺序表与链表的比较
2.5实验
2.5.1数组奇偶分割
2.5.2反转链表
2.5.3链表环检测
小结
习题2
第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.2.4链队列
3.2.5优先级队列
3.3栈和队列的比较
3.4实验
3.4.1汉诺塔
3.4.2吃巧克力
3.4.3表达式求值
小结
习题3
第4章串和数组
4.1串
4.1.1串的基本概念
4.1.2串的抽象数据类型描述
4.1.3顺序串
4.1.4链串
4.2串的模式匹配
4.2.1BruteForce算法
4.2.2KMP算法
4.3数组
4.3.1数组的基本概念
4.3.2数组的特性
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章树结构
5.1树
5.1.1树的基本概念
5.1.2树的术语
5.2二叉树
5.2.1二叉树的基本概念
5.2.2二叉树的性质
5.2.3二叉树的存储结构
5.2.4二叉树的遍历
5.2.5二叉树遍历算法的应用
5.2.6二叉树的建立
5.3哈夫曼树及哈夫曼编码
5.3.1哈夫曼树的基本概念
5.3.2哈夫曼树的构造
5.3.3哈夫曼编码
5.3.4构造哈夫曼树和哈夫曼编码的类的描述
5.4树和森林
5.4.1树的存储结构
5.4.2树的遍历规则
5.5实验
5.5.1平衡二叉树检验
5.5.2查找最近公共祖先
5.5.3由前序遍历和中序遍历构造二叉树
小结
习题5
第6章图
6.1图概述
6.1.1图的基本概念
6.1.2图的抽象数据类型描述
6.2图的存储结构
6.2.1邻接矩阵
6.2.2邻接表
6.3图的遍历
6.4最小生成树
6.4.1最小生成树的基本概念
6.4.2Kruskal算法
6.4.3Prim算法
6.5最短路径
6.5.1求某个顶点到其余顶点的最短路径
6.5.2求任意两个顶点间的最短路径
6.6拓扑排序和关键路径
6.6.1拓扑排序
6.6.2关键路径
6.7实验
6.7.1Prime算法
6.7.2单源最短路
小结
习题6
第7章排序
7.1排序概述
7.1.1排序的基本概念
7.1.2排序算法的性能评价
7.1.3待排序的记录和顺序表的类描述
7.2插入排序
7.2.1直接插入排序
7.2.2希尔排序
7.3交换排序
7.3.1冒泡排序
7.3.2快速排序
7.4选择排序
7.4.1直接选择排序
7.4.2堆排序
7.5归并排序
7.6实验
7.6.1插入排序
7.6.2链表排序
7.6.3链表排序(进阶)
小结
习题7
第8章查找
8.1查找的基本概念
8.1.1什么是查找
8.1.2查找表
8.1.3平均查找长度
8.2静态表查找
8.2.1顺序查找
8.2.2二分查找
8.2.3分块查找
8.3动态表查找
8.3.1二叉排序树查找
8.3.2平衡二叉树
8.3.3B-树和B 树
8.4哈希表查找
8.4.1哈希表的概念
8.4.2哈希函数
8.4.3解决冲突的方法
8.4.4哈希表查找性能分析
8.5实验
8.5.1寻找山形数组的顶点
8.5.2查找重复数
8.5.3有序矩阵查找
小结
习题8
附录A综合实践题
参考文献
|
內容試閱:
|
党的二十大报告中指出: 教育、科技、人才是全面建设社会主义现代化国家
的基础性、战略性支撑。必须坚持科技是第一生产力、人才是第一资源、创新是
第一动力,深入实施科教兴国战略、人才强国战略、创新驱动发展战略,这三大
战略共同服务于创新型国家的建设。高等教育与经济社会发展紧密相连,对促进
就业创业、助力经济社会发展、增进人民福祉具有重要意义。
自2017年11月出版以来,《数据结构(Java版)》经过了多次印刷,被许多高校选为“数据结构”课程的教材,深受这些学校师生的钟爱,并获得了良好的社会效益。但从另外一个角度来看,作者有责任和义务维护好这本书的质量,及时更新书中内容,做到与时俱进。
近年来,信息技术突飞猛进,在云计算、大数据和人工智能等方面发展得越来越快。即使在前一版的文章中已经涉及的一些技术,由于有了进一步的发展,也有必要将其内容进行及时的更新。本书改动内容如下。
(1) 重新对每章的内容进行了梳理。
(2) 在第2~8章,每章都增加了实验题及其解答,便于读者提高动手能力。
(3) 针对每章的应用题,重新运行原有程序,使习题答案准确无误。
(4) 针对每章的重点或难点的算法和实验,配置了微课视频进行讲解。
(5) 删除了附录A的考试试题,将试题及其答案作为配套资源提供。
通过上述修改,希望教师和学生更喜欢本教材,也希望本教材信息容量大、知识性强的特色能够很好地得到延续。
为便于教学,本书提供丰富的配套资源,包括教学大纲、教学课件、电子教案、程序源码、习题答案和微课视频。本书配套的视频二维码位置如表1所示。
表1视频二维码位置
序号
视频内容标题
视频二维码位置
所在页码
1
U2链表
2.3线性表的链式存储和实现24
2
U3中缀表达式转后缀表达式
3.4.3表达式求值57
3
U4 KMP
4.2.2KMP算法72
4
U5队列实现二叉树的层次遍历
5.2.4二叉树的遍历95
5
U5哈夫曼树
5.3哈夫曼树及哈夫曼编码103
6
U5由二叉树的前序遍历和中序遍历还原树
5.5.3从前序遍历和中序遍历构造二叉树110
7
U6迪杰斯特拉
6.5.1求某个顶点到其余顶点的最短路径133
8
U6拓扑排序
6.6拓扑排序和关键路径135
9
U7快速排序
7.3.2快速排序153
10
U7归并排序
7.5归并排序160
11
U7实验题3——链表归并排序
7.6.3链表排序(进阶)166
12
U8快慢指针查找重复数——理论
8.5.2查找重复数186
13
U8快慢指针查找重复数——代码
8.5.2查找重复数186
资源下载提示
课件等资源: 扫描封底的“课件下载”二维码,在公众号“书圈”下载。
数据文件等资源: 扫描目录上方的二维码下载。
视频等资源: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的二维码,可以在线学习。
本书的作者为吕云翔、郭颖美、王子豪,曾洪立参与了部分内容的编写并进行了素材整理及配套资源制作等。
最后,请读者不吝赐教,及时提出宝贵意见。
编者
2023年5月
前言
随着近年来计算概念的快速发展,计算学科已经发展成为一个内涵繁杂的综合性学科,其至少可以划分为计算机工程(CE)、计算机科学(CS)、信息系统(IS)、信息技术(IT)和软件工程(SE)5个领域,而且不同领域的人才所应具备的知识结构与能力侧重也不尽相同。尽管如此,从目前已经完成的部分来看,数据结构在各领域的知识体系中仍然占据着重要的位置。“数据结构”是普通高等院校计算机和信息管理等专业的一门必修课程,主要讨论数据的逻辑结构、在计算机中的存储结构以及对其进行的各种处理运算的方法和算法。
N.Wirth早在20世纪70年代就指出“程序=数据结构 算法”。数据结构主要研究数据在计算机中存储、组织、传递和转换的过程及方法,这些也是构成与支撑算法的基础。近年来,随着面向对象技术的广泛应用,从数据结构的定义、分类、组成到设计、实现与分析的模式和方法都有了长足的发展,现代数据结构更加注重和强调数据结构的整体性、通用性、复用性、简洁性和安全性。
为遵循上述原则,本书选择Java作为描述语言,因为相对于其他语言,Java程序设计语言是应用最广泛、面向对象程度化最高的语言,利用Java语言中的类和接口能够准确地描述任何一种数据结构的逻辑定义和运算,利用一种存储结构定义的派生类能够高效地实现对数据的运算。
在内容的选取与结构上,本书并未涉及各种数据结构,而是通过分类和讲解典型结构使读者形成对数据结构的宏观认识。根据内容的侧重,本书共分8章,分别为绪论、线性表、栈和队列、串和数组、树结构、图、排序和查找。
第1章介绍数据结构的基本概念,算法的描述和算法时间复杂度、空间复杂度等内容,是全书的基础。
第2章主要介绍线性表的基本概念和抽象数据类型定义、线性表顺序和链式两种存储方式的表示、基本操作的实现和相应的应用。
第3章简要介绍栈和队列的基本概念和抽象数据类型定义、栈和队列在顺序存储和链式存储结构下的基本操作和应用。
第4章主要介绍串的基本概念和数据类型定义、串的存储结构、基本操作实现和应用等内容。
第5章主要介绍树和二叉树的基本概念,详细介绍二叉树的性质和存储结构、遍历方法的实现及应用、哈夫曼树的概念和构造方法。
第6章主要介绍图的基本概念、抽象数据类型定义、存储结构和遍历方法,还介绍最小生成树的基本概念和算法、最短路径的相关算法、拓扑排序的概念和实现方法。
第7章介绍排序的基本概念,插入排序、交换排序、选择排序、归并排序等多种排序的原理、实现方法及性能分析。
第8章主要介绍查找的基本概念,顺序查找、二分查找等查找的原理、实现方法和性能分析,平衡二叉树、哈希表的概念、结构定义和实现方法。
本书理论知识的教学安排建议如下:
章节内容学时数
第1章绪论2
第2章线性表4~6
第3章栈和队列6~8
第4章串和数组2~4
第5章树结构6~8
第6章图4~8
第7章排序4~6
第8章查找4~6
建议先修课程: Java语言
建议理论教学时数: 32~48学时
建议实验(实践)教学时数: 16~32学时
本书中的所有算法都已经通过上机调试,尽量确保算法的正确性。在每章内容后都有小结,便于读者复结,并配有丰富的习题,包括选择题、填空题、算法设计题等,给读者更多思考的空间。
本书在以下几个方面具有突出特色:
(1) 内容精练,强化基础,合理安排内容结构,做到由浅入深、循序渐进。
本书各章节都从基本概念入手,逐步介绍其特点和基本操作的实现,把重点放在基础知识的介绍上,缩减难度较大的内容,使理论叙述简洁明了、重点突出、详略得当。
(2) 应用实例丰富、完整。
本书通过丰富的应用实例和源代码使理论和应用紧密结合,增强学生的理解能力,锻炼程序设计思维,并且代码有详细明了的注释,易于阅读。
(3) 每章后面附有小结和习题,便于学习、总结和提高。
本书结合学生的学习实际选择难度适中、逻辑合理,适于初学者和进阶者开拓思路、深入了解数据结构使用方法和技巧的习题,并附有详细的解答过程和注意要点,达到通俗易懂、由浅入深的效果,培养读者迁移知识的能力。
(4) 采用Java的泛型方法来体现方法的通用性。
本书采用面向对象的观点讨论数据结构技术,先将抽象数据类型定义成接口,再结合具体的存储结构加以实现,并以各实现类为线索对类中各种操作的实现方法加以说明。
(5) 图文并茂,便于学生直观地理解数据结构与算法。
本书通过图表的方式对数据结构及相应操作进行简单直接的描述,使内容更加浅显易懂。
教师可以按照自己对数据结构的理解适当地跳过一些章节,也可以根据教学目标灵活地调整章节的顺序,增减各章的学时数。
由于数据结构本身还在探索之中,加上我们的水平和能力有限,本书难免有疏漏之处,恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流。
作者
2017年6月
|
|