新書推薦:
《
地理计算与R语言
》
售價:NT$
551.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:NT$
398.0
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:NT$
332.0
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
UE5虚幻引擎必修课(视频教学版)
》
售價:NT$
505.0
《
真需求
》
售價:NT$
505.0
《
阿勒泰的春天
》
售價:NT$
230.0
《
如见你
》
售價:NT$
234.0
|
編輯推薦: |
本书首先简要回顾了Python语言的基础知识和程序设计的基本原则,然后依次介绍线性表、栈、队列、树、二叉树、图等常见的数据结构的基本概念、特点、存储表示、基本操作的算法实现及应用场合,*后介绍计算机中*常见的查找、排序等操作的算法原理、实现方法,并对算法的时间、空间性能等进行综合分析。 本书可作为高等学校计算机科学、软件工程、人工智能等专业数据结构课程的理想教材,也可供程序员、系统工程师等相关人员阅读参考。
|
內容簡介: |
本书首先简要回顾了Python语言的基础知识和程序设计的基本原则,然后依次介绍线性表、栈、队列、树、二叉树、图等常见的数据结构的基本概念、特点、存储表示、基本操作的算法实现及应用场合,*后介绍计算机中*常见的查找、排序等操作的算法原理、实现方法,并对算法的时间、空间性能等进行综合分析。 本书可作为高等学校计算机科学、软件工程、人工智能等专业数据结构课程的理想教材,也可供程序员、系统工程师等相关人员阅读参考。
|
關於作者: |
张玉华 苏州大学计算机科学与技术学院副教授,主要研究方向包括中文信息处理、算法设计与分析等。为本科生教授数据结构课程逾二十年。在数据结构教学方面积累了丰富的经验,发表了多篇相关教学论文。
|
目錄:
|
第1章Python语言程序设计基础
1.1Python基础知识
1.1.1Python概述及运行环境
1.1.2Python的变量和数据类型
1.1.3Python的运算符
1.1.4函数
1.1.5输入、输出和文件
1.1.6异常处理
1.1.7模块
1.2Python面向对象编程
1.2.1面向对象的基本概念
1.2.2类的定义和使用
1.2.3继承与派生
1.2.4迭代器与生成器
1.3与数据结构和算法相关的Python模块
1.3.1抽象基类和abc模块
1.3.2ctypes模块
1.3.3array模块
1.3.4NumPy模块
1.3.5collections模块
1.4上机实验
1.4.1找零钱
1.4.2数列面向对象练习
本章习题
第2章数据结构概述
2.1基本概念
2.1.1数据与数据结构
2.1.2数据类型
2.2数据结构课程讨论的内容
2.3算法及性能分析
2.3.1算法
2.3.2算法分析基础
2.3.3同一问题的不同算法
2.4上机实验
2.4.1Python内置类型常见操作的性能验证
2.4.2列表生成方法的性能比较
2.4.3变位词判断算法的性能比较
2.4.4哥德巴赫猜想问题
本章习题
第3章线性表
3.1线性表的基本概念
3.2线性表的抽象数据类型
3.3线性表的顺序存储及实现
3.3.1线性表顺序存储的基本方法
3.3.2Python列表的内部实现
3.3.3基于Python列表的实现
3.3.4基于底层C数组的实现
3.4线性表的链式存储及实现
3.4.1单链表
3.4.2循环链表
3.4.3双向链表
3.5顺序表与链表实现小结
3.5.1顺序表与链表的比较
3.5.2各种链表实现的比较
3.5.3自顶向下的数据结构实现
3.5.4算法设计的基本步骤
3.6线性表的应用
3.6.1求两个线性表的相同元素
3.6.2约瑟夫环问题
3.7线性表算法举例
3.7.1顺序表下的算法
3.7.2带头结点单链表下的算法
3.7.3与线性表具体实现无关的算法
3.8上机实验
3.8.1线性表的顺序表实现
3.8.2线性表的单链表实现
3.8.3线性表的双向非循环链表实现
3.8.4消费支出项目管理
3.8.5每日快递
3.8.6扑克牌整理
本章习题
第4章栈
4.1栈的基本概念
4.2栈的抽象数据类型
4.3栈的顺序存储及实现
4.3.1利用Python列表实现
4.3.2记录容量和栈顶位置的实现
4.4栈的链式存储及实现
4.5栈的典型应用
4.5.1括号匹配检验
4.5.2计算后缀表达式的值
4.5.3计算中缀表达式的值
4.5.4迷宫求解
4.6上机实验
4.6.1栈的实现和应用
4.6.2HTML文档标签匹配
4.6.3表达式求值
4.6.4四色地图着色
4.6.5用回溯法求解n皇后问题
本章习题
第5章队列
5.1队列的基本概念
5.2队列的抽象数据类型
5.3队列的顺序存储及实现
5.3.1物理模型法
5.3.2线性顺序队列
5.3.3循环队列
5.4队列的链式存储及实现
5.5队列的应用
5.5.1杨辉三角形的输出
5.5.2一元多项式的计算
5.5.3基于队列的迷宫求解
5.6双端队列
5.6.1双端队列的基本概念
5.6.2Python的双端队列类
5.6.3双端队列的应用
5.7优先级队列
5.8Python提供的多种队列
5.9上机实验
5.9.1循环队列的实现
5.9.2链队列的实现
5.9.3猜猜我的QQ号
5.9.4字符串的匹配
5.9.5制作糖果
5.9.6纸牌游戏
本章习题
第6章递归
6.1递归及递归算法
6.1.1什么是递归
6.1.2问题求解方法的递归定义
6.2线性表下递归算法的设计
6.2.1数据结构的递归定义
6.2.2顺序表下的递归算法
6.2.3单链表下的递归算法
6.3递归求解举例
6.3.1n皇后问题
6.3.2迷宫求解
6.3.3组合数求解
6.4递归算法性能分析
6.4.1函数调用与栈
6.4.2递归函数的运行过程及性能分析
6.4.3递归函数转换为非递归函数
6.5常见的算法设计模式
6.5.1穷举算法
6.5.2贪心算法
6.5.3递归算法
6.5.4带备忘录的递归算法
6.5.5动态规划法
6.6上机实验
6.6.1阶乘函数的时间性能分析
6.6.2单链表类的递归实现
6.6.3入栈与出栈的模拟
本章习题
第7章字符串和数组
7.1字符串
7.1.1字符串的基本概念
7.1.2字符串的抽象数据类型
7.1.3字符串的存储
7.1.4字符串的匹配
7.2数组
7.2.1数组相关概念
7.2.2表格的存储
7.2.3特殊矩阵的压缩存储
7.2.4数组的应用
7.3上机实验
7.3.1字符串匹配算法的验证
7.3.2幻方的判断和奇数阶幻方的构造
本章习题
第8章二叉树
8.1基础知识
8.1.1二叉树的基本概念
8.1.2相关术语
8.1.3一些特殊的二叉树
8.1.4二叉树的抽象数据类型
8.2二叉树的性质
8.3二叉树的存储结构及实现
8.3.1二叉树的顺序存储
8.3.2二叉树的嵌套列表存储
8.3.3二叉树的链式存储及实现
8.4二叉树的操作
8.4.1二叉树的遍历
8.4.2二叉树遍历的递归算法
8.4.3二叉树的递归算法举例
8.4.4二叉树的非递归遍历
8.4.5二叉树的创建
8.4.6二叉树的图形化输出
8.5堆与优先级队列
8.5.1二叉堆的定义
8.5.2二叉堆的主要操作
8.5.3二叉堆的实现
8.6哈夫曼树及其应用
8.6.1哈夫曼树的相关概念
8.6.2哈夫曼树的构造
8.6.3哈夫曼编码
8.7上机实验
8.7.1二叉树的链式实现
8.7.2表达式二叉树及计算
8.7.3哈夫曼编码的实现
本章习题
第9章树
9.1基础知识
9.1.1树的基本概念
9.1.2树的抽象数据类型
9.1.3树的性质
9.2树的存储结构
9.2.1双亲表示法
9.2.2孩子链表表示法
9.2.3孩子兄弟链表表示法
9.3树与二叉树的转换
9.3.1树转换为二叉树
9.3.2二叉树转换为树
9.3.3森林转换为二叉树
9.3.4二叉树转换为森林
9.4树与森林的遍历
9.4.1树的遍历
9.4.2森林的遍历
9.5树的实现
9.5.1树的孩子兄弟链表结点类
9.5.2树的孩子兄弟链表类
9.6上机实验
9.6.1树的实现
9.6.2家谱处理
本章习题
第10章图
10.1基础知识
10.1.1图的定义
10.1.2图的相关术语
10.1.3图的抽象数据类型
10.2图的存储结构及实现
10.2.1邻接矩阵
10.2.2邻接表
10.3图的遍历
10.3.1深度优先搜索
10.3.2广度优先搜索
10.3.3遍历算法的应用
10.4最小生成树
10.4.1Prim算法
10.4.2Kruskal算法
10.5最短路径
10.5.1单源点最短路径
10.5.2每对顶点间的最短路径
10.6拓扑排序
10.6.1概述
10.6.2广度优先拓扑排序
10.6.3深度优先拓扑排序
10.7关键路径
10.7.1相关概念
10.7.2算法设计
10.7.3算法实现
10.8上机实验
10.8.1无向图的实现
10.8.2无向网的最小生成树
10.8.3有向网的最短路径
10.8.4有向无环图的拓扑排序
10.8.5AOE网的关键路径
10.8.6拯救007
10.8.7骑士周游问题
本章习题
第11章查找
11.1基础知识
11.1.1相关概念
11.1.2查找的分类
11.1.3查找算法的性能衡量
11.1.4查找表的抽象数据类型
11.1.5记录类型的定义
11.2线性表下的查找
11.2.1基于无序线性表的查找
11.2.2基于有序线性表的查找
11.2.3索引顺序表及分块查找
11.2.4查找算法性能的下界
11.3二叉树下的查找
11.3.1二叉查找树
11.3.2平衡二叉树
11.4哈希表查找
11.4.1哈希表的定义
11.4.2哈希函数设计方法
11.4.3解决冲突的方法
11.4.4哈希表的实现
11.4.5哈希查找性能分析
11.5Python的集合和字典
11.6查找小结
11.7上机实验
11.7.1线性表下查找算法的实现
11.7.2线性表下查找算法的性能测试与比较
11.7.3二叉查找树的实现及查找性能测试与比较
11.7.4哈希表的实现及查找性能测试与比较
本章习题
第12章排序
12.1基础知识
12.1.1相关概念
12.1.2排序表的类型定义
12.1.3排序的分类
12.1.4排序算法的性能衡量
12.2插入排序
12.2.1直接插入排序
12.2.2折半插入排序
12.2.3希尔排序
12.3交换排序
12.3.1冒泡排序
12.3.2快速排序
12.4选择排序
12.4.1简单选择排序
12.4.2堆排序
12.5归并排序
12.5.1自底向上的归并排序
12.5.2自顶向下的归并排序
12.6基数排序
12.6.1多关键字排序
12.6.2链式基数排序
12.7各种排序算法的比较
12.8高级语言中使用的排序
12.8.1C标准模板库中的排序
12.8.2TimSort排序
12.9上机实验
12.9.1排序算法的实现
12.9.2排序算法的性能测试与比较
12.9.3教学系统数据查询和统计
本章习题
参考文献
|
內容試閱:
|
信息社会让计算无所不在。所谓计算思维,是指用计算机解决现实世界问题的思考框架。计算思维首先把现实世界的目标问题用计算机能够加工处理的数据对象描述。这些基本数据对象及其相关加工方法就是数据结构课程的主要内容。本课程是计算机科学及相关专业的专业基础课,同时也适用于其他与信息技术相关的从业人员。
数据对象的相关加工方法需要用计算机程序语言表达。由于语言简洁、开发效率高、可移植性强、资源丰富等优势,Python语言已经成为人工智能和大数据时代的第一开发语言,也逐渐成为各高校计算机编程入门教学的第一语言,在计算机各相关专业中使用Python语言进行数据结构教学将成为必然趋势。
近年来,国家大力加强人工智能领域的人才培养力度,提出到2030年实现人工智能领域全球领先的战略目标。高校是人工智能战略目标实施的主要阵地,2019年全国共有180所大学获得人工智能本科专业首批建设资格。由于数据结构课程的重要性,高校的人工智能本科专业培养方案中都将数据结构列为学科基础课; 又因Python语言在数据科学、人工智能领域的绝对优势,将Python与数据结构相结合进行教学是人工智能专业建设的不二选择。
目前,数据结构C版、Java版的教材较为丰富,而Python语言描述的数据结构教材较少,配套的教学资源也比较少,很难满足Python语言描述数据结构教学的多样性需求。
本书具有以下特色。
(1) 数据结构理论与Python语言紧密结合。
Python语言的功能非常强大,可以表示线性表、字典等经典数据结构,实现查找、排序等操作。由于这些数据结构和操作都已实现,以致使用Python语言进行数据结构教学的可行性曾一度遭到质疑。为了达到更好的教学效果,本书在介绍数据结构普遍性理论的同时,不仅将Python语言作为数据结构和算法的描述工具,而且将Python语言的内置结构作为具体数据结构的案例进行剖析,使学生更好地理解抽象的逻辑结构和具体的存储结构之间的关系,使得数据结构理论知识的掌握和运用与Python语言的理解和实践相互支撑、相辅相成。
一方面,学生对Python语言内置数据结构的内部表示和基本操作实现方法有了更深刻的认识,对基本操作性能的理解可以避免低效算法的使用,学生的Python语言的运用能力得到了提高; 另一方面,Python语言内置结构的特点和性能表现能帮助学生更好地理解各种数据结构的性质和特点,对基础理论知识的掌握大有裨益。
(2) 注重基础理论的同时加强应用和实践能力的培养。
本书用Python语言实现了所有经典数据结构,每种数据结构可以作为单独的模块供后续章节的数据结构和算法来使用,在面向对象技术的运用上给出了有用的示例。本书在介绍每种数据结构时给出丰富的应用案例,每章配备丰富的例题和实验,力图将应用和实践与基础理论相融合,打造学生在数据结构选择、算法设计和编程等方面的过硬能力。
(3) 内容完整,力求系统性与通用性、基础性与新颖性的统一。
本书系统介绍数据结构的基础理论、算法设计的基本方法及Python语言的基本知识,内容完整,是数据结构、算法知识和编程实践的有机结合,适用于计算机及相关专业数据结构的通用教学要求。
在介绍基础性理论知识的同时,本书力求与时俱进,去除了一些陈旧的内容,例如广义表及线索二叉树等内容; 增加了一些新的内容,例如Python语言中使用的TimSort混合排序算法等。
(4) 以学生易学易懂、习得能力为编写主旨,多管齐下,注重细节,确保教材实用性。
教材采用对比、举例、小结、图表等多种方式进行多维度表达; 对同一问题举一反三,用不同方案进行求解; 对教学难点进行螺旋式深入教学; 配备丰富的实验和大量且形式多样的习题,能方便教师和学生的使用; 教材包含近300张插图和100余张表格,大量精心设计的插图和表格将抽象的内容形象化,可有效降低理解问题的难度。
本书共12章,分为三部分。
(1) 第1章介绍课程涉及的Python语言相关知识,包括Python语言面向对象的相关内容、生成器、迭代器及常用的模块等。
(2) 第2~10章介绍数据结构及算法、算法分析的基本概念,明确数据结构是什么、学什么,介绍算法的特点、描述方法以及算法分析的目的和方法;系统介绍线性表、栈、队列、树、二叉树、图等常见数据结构的基本概念、特点、存储表示、基本操作的算法实现,并给出各种数据结构的应用实例以及常见的算法设计模式。
(3) 第11章和第12章介绍计算机中最常见的查找、排序等操作的算法原理、实现方法,并对算法的时间、空间性能等进行综合分析。
本书配套资源丰富,包括教学大纲、教学课件、程序源码、部分习题答案、教学进度表,编者还为本书精心录制了1000分钟的微课视频。
资源下载提示
课件等资源: 扫描封底的课件下载二维码,在公众号书圈下载。
素材(源码)等资源: 扫描目录上方的二维码下载。
视频等资源: 扫描封底刮刮卡中的二维码,再扫描书中相应章节中的二维码,可以在线学习。
本书由苏州大学的张玉华、吕强、朱晓旭共同编写,特别感谢杨季文教授在本书编写和校对过程中给予的大力指导,感谢赵雷、周克兰、唐自立和何俊等多位专家和老师给予的指点和帮助。
由于时间和编者水平有限,书中不当之处在所难免,敬请诸位同行、专家和读者批评指正。
编者2020年8月
|
|