Python中文网

数据结构(Python版)/21世纪高等学校计算机基础实用规划教材,由清华大学出版社在2019-03-01月出版发行,本书编译以及作者信息为: 吕云翔,郭颖美,孟爻 著,这是第1次发行, 国际标准书号为:9787302521860,品牌为清华大学, 这本书采用平装开本为16开,纸张采为胶版纸,全书共有209页,字数35万6000字,值得推荐。

此书内容摘要

本书在选材与编排上,贴近当前普通高等院校“数据结构”课程的现状和发展趋势,内容难易适度,突出实用性和应用性。本书并未面面俱到地介绍各种数据结构,而是通过分类和讲解典型结构,使读者对数据结构形成宏观认识。根据内容侧重,本书共分为8章,分别为绪论、线性表、栈和队列、串和数组、树结构、图、内排序和查找。
本书可以作为普通高校计算机相关专业“数据结构”课程的教材,也可以供学习数据结构的读者单独使用(包括参加计算机等级考试或相关专业自学考试)参考。
本书是高等院校计算机科学、软件工程及相关专业“数据结构”课程的理想教材,也可以供程序员、系统工程师等相关人员阅读参考。

关于此书作者

暂无.

编辑们的推荐

暂无.

数据结构(Python版)/21世纪高等学校计算机基础实用规划教材图书的目录

目录
第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
第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
第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章串和数组
4.1串
4.1.1串的基本概念
4.1.2串的抽象数据类型描述
4.1.3顺序串
4.1.4链串
4.2串的模式匹配
4.2.1Brute Force算法
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章树结构
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
第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章排序
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
第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
附录A数据结构试卷
数据结构试卷(一)
数据结构试卷(二)
数据结构试卷(三)
数据结构试卷(四)
数据结构试卷(五)
附录B实践题
第2章线性表
第3章栈和队列
第4章串和数组
第5章树结构
第6章图
第7章排序
第8章查找
参考文献

部分内容试读

前言
随着近年来计算概念的快速拓展,计算科学已经发展成为一个内涵繁杂的综合性学科,其至少可以划分为计算机工程(CE)、计算机科学(CS)、信息系统(IS)、信息技术(IT)和软件工程(SE)5个领域,而且不同领域的人才所应具备的知识结构与能力侧重也不尽相同。尽管如此,数据结构在各领域的知识体系中仍然占据着重要的位置。“数据结构”是普通高等院校计算机专业和信息管理专业的一门必修课程,主要讨论数据的逻辑结构、在计算机中的储存结构以及对其进行的各种处理运算的方法和算法。
N.Wirth早在20世纪70年代就指出“程序=数据结构+算法”。数据结构主要研究数据在计算机中储存、组织、传递和转换的过程及方法,这些也是构成与支撑算法的基础。近年来,随着面向对象技术的广泛应用,从数据结构的定义、分类、组成到设计、实现与分析的模式和方法都有了长足的发展,现代数据结构更加注重和强调数据结构的整体性、通用性、复用性、间接性和安全性。
基于上述情况,本书选择Python作为描述语言。Python语言语法简洁优美,功能强大,有着广泛的应用领域,如互联网、大数据、人工智能等领域。因此,学习Python语言,在未来的学习和工作中,都有用武之地。同时,Python语言相对于大多数高级语言,更加适合初学者学习,Python的语法与伪代码描述很相似,逻辑清晰; 此外,Python语言也同样具有大部分高级语言的特性,对计算机相关专业的学生未来学习其他编程语言有所帮助。
在内容的选取与结构安排上,本书通过分类和讲解典型结构使读者对数据结构形成宏观认识。根据内容的侧重,本书分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
建议先修课程: Python语言。
建议理论教学时数: 32~48学时。
建议实验(实践)教学时数: 16~32学时。
本书中的所有算法都已经通过上机调试,尽量保证算法的正确性。在每章内容后都有小结,便于读者复习总结,并配有丰富的习题,包括选择题、填空题、算法设计题等,给读者更多的思考空间。
本书在以下几个方面具有突出特色。
(1) 内容精炼,强化基础,合理安排内容结构,做到深入浅出、循序渐进。
本书各章节都从基本概念入手,逐步介绍其特点和基本操作的实现,把重点放在基础知识的介绍上,缩减难度较大的内容,使理论叙述简洁明了、重点突出、详略得当。
(2) 应用实例丰富、完整。
本书通过丰富的应用实例和源代码使理论和应用紧密结合,增强学生的理解能力,锻炼程序设计思维。代码有详细明了的注释,易于阅读。
(3) 每章后面附有小结和习题,便于学习、总结和提高。
本书结合学生的学习实际选择难度适中、逻辑合理、适于初学者和进阶者开拓思路、深入了解数据结构使用方法和技巧的习题,并附有详细的解答过程和注意要点,达到通俗易懂、深入浅出的效果,培养读者迁移知识的能力。
(4) 采用Python抽象类体现方法的通用性。
本书采用面向对象的观点讨论数据结构技术,先将抽象数据类型定义成接口,再结合具体的存储结构加以实现,并以各实现类为线索对类中各种操作的实现方法加以说明。
(5) 图文并茂,便于学生直观地理解数据结构与算法。
本书通过图表的方式对数据结构及相应操作进行简单直接的描述,使内容更加浅显易懂。
教师可以按照自己对数据结构的理解适当地跳过一些章节,也可以根据教学目标灵活地调整章节的顺序,增减各章的学时数。
本书的作者为吕云翔、郭颖美、孟爻,曾洪立、吕彼佳、姜彦华参与了部分内容的编写并进行了素材整理及配套资源制作等。
由于数据结构本身还在探索之中,加上我们的水平和能力有限,本书难免有疏漏之处,恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流。

关于此书评价

暂无.

书摘内容

第3章
栈 和 队 列
3.1栈
3.1.1栈的基本概念
栈是一种特殊的线性表,其插入、删除操作只能在表的尾部进行。在栈中允许进行插入、删除操作的一端称为栈顶,另一端称为栈底。在栈{a0,a1,…,an-1}中a0称为栈底元素,an-1称为栈顶元素。通常,栈的插入操作叫入栈,栈的删除操作叫出栈。
由于栈的插入和删除操作只允许在栈顶进行,每次入栈的元素即成为栈顶元素,每次最先出栈的总是栈顶元素,所以栈是一种后进先出的线性表。就像一摞盘子,每次将一个盘子摞在最上面,每次从最上面取一只盘子,不能从中间插进或者抽出。
3.1.2栈的抽象数据类型描述
栈中的数据元素和数据间的逻辑关系与线性表相同,是由n个具有相同数据类型的数据元素构成的有限序列,栈的抽象数据类型的Python描述如下:
1from abc import ABCMeta,abstractmethod,abstractproperty
2
3class IStack(metaclass=ABCMeta):
4@abstractmethod
5def clear(self):
6'''将栈置空'''
7pass
8@abstractmethod
9def isEmpty(self):
10'''判断栈是否为空'''
11pass
12@abstractmethod
13def length(self):
14'''返回栈的数据元素个数'''
15pass
16@abstractmethod
17def peek(self):
18'''返回栈顶元素'''
19pass
20@abstractmethod
21def push(self,x):
22'''数据元素x入栈'''
23pass
24@abstractmethod
25def pop(self):
26'''将栈顶元素出栈并返回'''
27pass
28@abstractmethod
29def display(self):
30'''输出栈中的所有元素'''
31pass
栈的抽象数据Python抽象类包含了栈的主要基本操作,如果要使用这个类还需要具体的类来实现。栈的Python抽象类的实现方法主要有以下两种。
(1) 基于顺序存储的实现,为顺序栈。
(2) 基于链式存储的实现,为链栈。
3.1.3顺序栈
1. 顺序栈类的描述
顺序栈用数组实现,因为入栈和出栈操作都是在栈顶进行,所以增加变量top来指示栈顶元素的位置,top指向栈顶元素存储位置的下一个存储单元的位置,空栈时top=0。
顺序栈类的Python语言描述如下:
1class SqStack(IStack):
2def init(self,maxSize):
3self.maxSize = maxSize # 栈的最大存储单元个数
4self.stackElem = [暂无.] * self.maxSize # 顺序栈存储空间
5self.top = 0 # 指向栈顶元素的下一个存储单元位置
6
7def clear(self):
8'''将栈置空'''
9self.top = 0
10
11def isEmpty(self):
12'''判断栈是否为空'''
13return self.top == 0
14
15def length(self):
16'''返回栈的数据元素个数'''
17return self.top
18
19def peek(self):
20'''返回栈顶元素'''
21if not self.isEmpty():
22return self.stackElem[self.top-1]
23else:
24return 暂无.
25def push(self,x):
26'''数据元素x入栈'''
27pass
28
29def pop(self):
30'''将栈顶元素出栈并返回'''
31pass
32
33def display(self):
34'''输出栈中的所有元素'''
35for i in range(self.top-1,-1,-1):
36print(self.stackElem[i],end=' ')
……

数据结构(Python版)/21世纪高等学校计算机基础实用规划教材最新最全的试读、书评、目录、简介信息由Python中文网整理提供。