欢迎光临
免费的PDF电子书下载网站

数据结构(Python版) PDF下载

编辑推荐

《数据结构(Python版)》在以下几个方面具有突出特色:

 ;(1)内容精炼,强化基础,合理安排内容结构,做到深入浅出、循序渐进。

 ;本书各章节都从基本概念入手,逐步介绍其特点和基本操作的实现,把重点放在基础知识的介绍上,缩减难度较大的内容,是理论叙述简洁明了、重点突出、详略得当。

 ;(2)应用实例丰富、完整。

 ;本书通过丰富的应用实例和源代码使理论和应用紧密结合,增强学生的理解能力。锻炼程序设计思维,并且代码有详细明了的注释,易于阅读。

 ;(3)每章后面附有小结和习题,便与学习、总结和提高。

 ;本书结合学生的学习实际选择难度适中、逻辑合理,适于初学者和进阶者开拓思路、深入了解数据结构使用方法和技巧的习题,并附有详细的解答过程和注意要点,达到通俗易懂、深入浅出的效果,培养读者迁移知识的能力。

 ;(4)采用Python抽象类体现方法的通用性。

 ;本书采用面向对象的观点讨论数据结构技术,先将抽象数据类型定义成接口,再结合具体的存储结构加以实现,并以各实现类为线索对类中各种操作的实现方法加以说明。

 ;(5)图文并茂,便于学生直观地理解数据结构与算法。

(1) 简单易学:只要求学生学过高等数学,不需要更多的预备知识,写作风格深入浅出,理论适中,实例丰富,便于自学。

(2) 实用性强:注重离散数学作为计算机科学专业的数学基础,强调与本专业后续课程的关系,所举例子尽量与专业相关。

(3) 定位明确:适合地方二本院校和独立学院学生使用。 ;

内容简介

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

作者简介

暂无

数据结构(Python版) PDF下载

目录

目录


第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章主要介绍查找的基本概念,顺序查找、二分查找等查找的原理、实现方法和性能分析,平衡二叉树、哈希表的概念、结构定义和实现方法。
本书的理论知识的教学安排建议如下表所示。

免费在线读

第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) 基于链式存储的实现,为链栈。

数据结构(Python版) pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:数据结构(Python版)