新書推薦:
《
十一年夏至
》
售價:NT$
347.0
《
如何打造成功的商业赛事
》
售價:NT$
407.0
《
万千教育学前·透视学前儿童的发展:解析幼儿教师常问的那些问题
》
售價:NT$
265.0
《
慈悲与玫瑰
》
售價:NT$
398.0
《
启蒙的辩证:哲学的片简(法兰克福学派哲学经典,批判理论重要文本)
》
售價:NT$
347.0
《
心跳重置
》
售價:NT$
269.0
《
云中记
》
售價:NT$
347.0
《
中国古代妇女生活(中国古代生活丛书)
》
售價:NT$
214.0
|
編輯推薦: |
本教材主要介绍线性表、树和图三类基本数据结构,并学习常用的查找和排序算法,培养算法分析的能力。本教材以工程应用为导向,每章起始既引入典型的工程应用问题,引导学生更深入地理解数据结构知识。现有教材的图形化描述多为流程图,不符合规范面向对象的要求,部分代码风格不良。本教材采用规范的UML语言对算法进行描述,并严格遵守阿里代码风格。本教材引入网络流行用语,以轻松诙谐的方式介绍复杂的理论知识。本教材面向普通高等学院计算机类相关专业,已经完成C 程序设计课程学习的本科生,同时也可以满足其他工科专业的本科生学习数据结构的需求。
|
內容簡介: |
数据结构是计算机专业的核心基础课程之一,在计算机及相关专业教学中占有十分重要的地位,也是其他理工类专业的重要选修课程。本书主要介绍线性表、树和图三种重要的基本数据结构,以及如何应用这些基本数据结构解决实际问题,在此基础上穿插讲解了一些在计算机发展史上做出重要贡献的经典算法,并以查找和排序为专题介绍了这两类算法。 本书既具有较强的理论性,又注重实际动手能力的培养,提供了丰富的图例和大量接近可执行版本的代码样例。通过阅读和学习,读者将了解数据对象的特性,掌握数据的逻辑结构与存储结构,初步具备数据组织和算法设计能力,从而提高学生的程序设计技能,为后续课程的学习和科研工作的参与打下良好的基础。 本书面向普通高等学校计算机及相关专业已经完成C 程序设计课程学习的本科生,也适用于其他理工类专业有学习数据结构需求的本科生和希望强化专业基础知识进入信息行业的非计算机专业学生阅读,还可作为计算机行业软硬件开发人员的参考书。
|
關於作者: |
慕晨,男,博士,长安大学信息工程学院副教授,计算机科学系主任,国家级一流专业“计算机科学与技术”负责人。2009年博士毕业于西安交通大学。负责计算机科学与技术国家级一流专业、卓越工程师,以及留学生班的申报、教学实施和教学改革工作。承担计算机科学与技术及卓越工程师的“数据结构”课程的本科生教学工作约10年20余次,同时还承担“数据结构”留学生英文课程的教学工作,对数据结构课程的教学内容和教学方法有深刻的理解,在教学中实施了多项教学组织、评价等方面的改革。
|
目錄:
|
第1章绪论
1.1数据结构的基本概念
1.1.1数据结构的定义与研究对象
1.1.2数据结构在程序设计中的作用
1.1.3逻辑结构与存储结构
1.2抽象数据类型与C 类
1.2.1抽象数据类型的基本概念
1.2.2设计与实现: 无人驾驶汽车
1.3算法与算法分析
1.3.1算法的基本概念
1.3.2算法描述的工具
1.3.3算法评价与渐进复杂度思想
1.3.4算法的复杂度分析
1.4本章小结
本章习题
扩展阅读: 唐纳德·欧文·克努特和他的天书
第2章线性表
2.1线性表及其逻辑结构
2.1.1线性表的定义
2.1.2线性表的抽象数据类型定义
2.2线性表的顺序存储和实现
2.2.1线性表的顺序存储
2.2.2顺序表基本操作的实现
2.3线性表的链接存储和实现
2.3.1线性表的链接存储
2.3.2单链表
2.3.3单链表基本操作的实现
2.3.4双向链表
2.3.5循环链表
2.3.6静态链表
2.4顺序表与链表的比较
2.5可怕的死亡游戏
2.5.1一维数组
2.5.2顺序表
2.5.3循环链表
2.5.4数学建模
2.6本章小结
本章习题
扩展阅读: 复杂系统的计算机仿真方法
目录
数据结构与算法——C 实现(微课视频版)
第3章栈和队列
3.1引言
3.2栈
3.2.1栈的定义
3.2.2栈的顺序存储结构及其实现
3.2.3两栈共享空间
3.2.4栈的链接存储结构及其实现
3.3队列
3.3.1队列的定义
3.3.2队列的顺序存储结构及其实现
3.3.3双端队列
3.3.4队列的链接存储结构及其实现
3.4栈和队列的应用
3.4.1数制转换
3.4.2函数的调用与递归
3.4.3表达式求值
3.4.4魔王语言翻译官
3.5本章小结
本章习题
扩展阅读: 排队论
第4章串和数组
4.1引言
4.2字符串与模式匹配
4.2.1字符串的逻辑结构
4.2.2字符串的存储结构
4.2.3模式匹配
4.3数组和矩阵的压缩存储
4.3.1数组与矩阵
4.3.2特殊矩阵的压缩存储
4.3.3稀疏矩阵的压缩存储
4.4本章小结
本章习题
扩展阅读: 暴力破解
第5章树和二叉树
5.1引言
5.2树与树的存储结构
5.2.1树的基本概念
5.2.2树的逻辑结构
5.2.3树的存储结构
5.3二叉树的逻辑结构
5.3.1二叉树的基本概念
5.3.2二叉树的基本性质
5.3.3二叉树的抽象数据类型
5.3.4二叉树的遍历
5.3.5二叉树的构造
5.4二叉树的存储结构
5.4.1顺序存储结构
5.4.2链式存储结构
5.4.3线索链表
5.5树、森林和二叉树的转换
5.5.1树和二叉树的对应关系
5.5.2树、森林和二叉树的相互转换
5.5.3树、森林和二叉树遍历操作的关系
5.6哈夫曼树和哈夫曼编码
5.6.1哈夫曼树的定义
5.6.2哈夫曼树的构造
5.6.3前缀编码和哈夫曼编码
5.7本章小结
本章习题
扩展阅读: 树结构的设计模式——组合模式
第6章图
6.1引言
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.5.1最小生成树
6.5.2最短路径
6.5.3有向无环图及其应用
6.6本章小结
本章习题
扩展阅读: 艾兹格·W.迪杰斯特拉
第7章查找
7.1查找的基本概念
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.4.3处理冲突的方法
7.4.4散列表的查找分析
7.5B树
7.5.1B树的概念与查找
7.5.2B树的插入、构造和删除
7.6本章小结
本章习题
扩展阅读: 启发式搜索算法
第8章排序
8.1排序的基本概念
8.2插入排序
8.2.1直接插入排序
8.2.2希尔排序
8.3交换排序
8.3.1冒泡排序
8.3.2快速排序
8.4选择排序
8.4.1简单选择排序
8.4.2堆排序
8.5归并排序
8.6分配排序
8.6.1桶式排序
8.6.2基数排序
8.7本章小结
本章习题
扩展阅读: 影响世界进步的十大经典算法
|
內容試閱:
|
“数据结构”课程是计算机及相关专业的核心课程,主要学习如何将实际工程问题转化为计算机可以描述、存储和解决的问题,并编程实现。该课程理论和实践紧密结合,对学生的综合素质要求较高。教学过程中发现,多数学生对数据结构的理论知识掌握较好,但实际动手编程实现能力不足,运用能力较差; 代码编写较为随意,导致代码晦涩、调试困难,进而影响了学习积极性。针对上述问题,本书以学生为本,以工程应用为导向,具有以下几个特色。
(1) 理论联系实际,引入典型的工程应用问题,分析其中涉及的数据结构,并给出案例的分析过程及代码实现。各个环节紧密衔接,实现了理论和实践的有机结合。
(2) 采用面向对象设计方法,用规范的UML语言对数据结构和算法进行描述,并注重代码风格,便于代码阅读和调试,也为学生毕业后适应公司代码规范化要求打好基础。
(3) 为拉近与学生的距离,激发其学习兴趣,部分内容引入网络流行用语和深入浅出的例子,以轻松诙谐的方式介绍复杂的理论知识。利用二维码方式提供课件和教学视频等资源,将纸质教材和电子资源融为一体,更利于读者对所学知识融会贯通。
(4) 每章后增加了扩展阅读的内容,对章节知识进行一定的拓展,或者介绍科学家的事迹,激发学生的学习兴趣,引导学生对更深、更新层次的知识进行探索。
本书共分为8章,重点介绍线性表、树和图三类基本数据结构,并讲解常用的查找和排序算法,培养学生的算法分析能力。第1章主要介绍数据结构和算法的基本概念,包括数据结构和算法在程序设计中的作用、抽象数据类型、面向对象建模的基本思路、算法描述的常用方法、算法分析的思想和时间复杂度的计算等内容。其中,算法的时间复杂度是本章的重点和难点。第2章重点介绍第一种基本数据结构——线性表,包括线性表的基本知识以及线性表的顺序存储结构和链接存储结构的实现,并扩展到双向链表、循环链表和静态链表等相关知识,向读者展示了不同数据结构对程序的影响。其中,单链表是本章的重点。第3章介绍两类特殊的线性表——栈和队列,包括栈和队列的特性以及顺序存储结构和链接存储结构的实现。栈是限定在一端进行插入和删除操作的线性表; 队列是限定在一端插入,另一端删除的线性表。本章还介绍了栈在函数递归调用中的作用和表达式求值等知识。其中,表达式求值是本章的难点。第4章介绍另外两类特殊的线性表——串和数组,包括字符串的存储、数组的寻址、稀疏矩阵和特殊矩阵的压缩存储,以及串的两种模式匹配算法BF算法和KMP算法等内容。其中,模式匹配是本章的难点。第5章介绍第二种基本数据结构——树和二叉树,包括树和二叉树的逻辑结构和存储结构,树、森林和二叉树的转换,以及树的典型应用——哈夫曼树和哈夫曼编码。其中,二叉链表是本章的重点。第6章介绍第三种基本数据结构——图,包括图的定义和基本概念、图的存储、图的遍历、图的典型应用(最小生成树、最短路径、有向无环图的应用、AOV网和AOE网)。其中,图的存储、最小生成树和最短路径算法是本章的重点和难点。第7章介绍线性表和树表的查找方法,包括顺序查找、折半查找、二叉排序树、平衡二叉树、散列表和B树等重要的查找算法。其中,平衡二叉树是本章的难点。第8章介绍几类重要的排序算法,包括插入、交换、选择、归并和分配等排序算法,其中,快速排序和堆排序是本章的重点。
本书重点培养学生使用数学和计算机方法解决实际生活中的各种复杂工程问题的能力,包括: ①培养学生应用数学和计算机方法对计算机领域的复杂工程问题进行识别、表达和分析的能力; ②设计和开发满足特定需求的解决方案; ③学习使用数据存储和数据处理的重要技术和方法,并理解不同存储方法在解决实际问题时的优势和局限性; ④初步培养学生评价一个问题的解决方案对社会、安全、法律及环境的影响的能力; ⑤通过课程设计和专题研究等教学环节,还可以培养学生的团队合作和沟通表达能力。
本书衔接C 程序设计或者面向对象程序设计课程,并建议读者具备离散数学的基本知识。在学习本书之前,读者需要掌握基本的C 程序设计能力,了解类、函数、数组、递归、指针和模板等知识。本书将频繁使用,并帮助读者熟练掌握这些知识。
本书由长期从事“数据结构”课程本科教学工作的团队负责编写,每位老师都有10年以上的“数据结构”课程教学经验。本书由慕晨老师统稿,安毅生老师组织。其中,第1章和第6章由慕晨老师编写,第2章和第3章由张淼艳老师编写,第4章和第5章由公维宾老师编写,第7章和第8章由周琳老师编写。研究生王春利、陈茹梦、孙靖、朱明明等同学参与了绘图、校稿和代码调试工作,在此表示感谢。
由于作者水平有限,本书虽经仔细斟酌,不当之处仍在所难免,敬请各位读者批评指正。
作者
2022年3月
|
|