数据结构和算法基于python语言_数据结构与算法(Python语言描述)

基本信息
作者:
裘宗燕
ISBN:9787111521181
上架时间:2016-1-4
出版日期:2016 年1月
开本:16开
页码:343
版次:1-1
数据结构和算法基于python语言_数据结构与算法(Python语言描述)
文章图片

编辑推荐
《面向CS2013计算机专业规划教材·数据结构与算法:Python语言描述》由机械工业出版社出版。
内容简介
书籍
计算机书籍
Python是目前国际上流行的用于教授**门程序
设计课程的语言,国内高校也开始使用。裘宗燕*的
《数据结构与算法(Python语言描述面向CS2013计算
机专业规划教材)》是结合国内数据结构课程现状,
采用Python作为工作语言,全新编撰的一本数据结构
教程。书中结合抽象数据类型结构的思想,基于
Python的面向对象机制,阐述各种基本数据结构的性
质、问题和实现,讨论一些相关算法的设计、实现和
特性。书中还结合研究了一些数据结构的应用案例。
本书要求学习者已有基本Python程序设计的知识
和经验,可以作为基于Python的计算机基础课程中的
数据结构课程教材,也可以作为学习Python语言基本
内容之后的一本面向对象等高级编程技术的进阶读物

作译者
裘宗燕,北京大学数学学院信息科学系教授。长期从事计算机软件与理论、程序设计语言和符号计算方面的研究与教学工作。已出版过多部*作和译*,包括《程序设计语言基础》(译*,北京大学出版社,1990),《Mathematics数学软件系统的应用与程序设计》(编*,北京大学出版社。1994),《C++程序设计语言(特别版)》(译*。机械工业出版社,2002),《C++语言的设计和演化》(译*,机械工业出版社,2002),《程序设计语言——概念和结构》(合译,机械工业出版社,2002),《从问题到程序——程序设计与C语言引论》(编*,机械工业出版社,2005年第1版,201 1年第2版)等。
目录
前言
第1章 绪论
1.1 计算机问题求解
1.1.1 程序开发过程
1.1.2 一个简单例子
1.2 问题求解:交叉路口的红绿灯安排
1.2.1 问题分析和严格化
1.2.2 图的顶点分组和算法
1.2.3 算法的精化和Python描述
1.2.4 讨论
1.3 算法和算法分析
1.3.1 问题、问题实例和算法
1.3.2 算法的代价及其度量
1.3.3 算法分析
1.3.4 Python程序的计算代价(复杂度)
1.4 数据结构
1.4.1 数据结构及其分类
1.4.2 计算机内存对象表示
1.4.3 Pymon对象和数据结构
练习
第2章 抽象数据类型和Python类
2.1 抽象数据类型
2.1.1 数据类型和数据构造
2.1.2 抽象数据类型的概念
2.1.3 抽象数据类型的描述
2.2 Python的类
2.2.1 有理数类
2.2.2 类定义进阶
2.2.3 本书采用的ADT描述形式
2.3 类的定义和使用
2.3.1 类的基本定义和使用
2.3.2 实例对象:初始化和使用
2.3.3 几点说明
【数据结构和算法基于python语言_数据结构与算法(Python语言描述)】2.3.4 继承
2.4 Pymon异常
2.4.1 异常类和自定义异常
2.4.2 异常的传播和捕捉
2.4.3 内置的标准异常类
2.5 类定义实例:学校人事管理系统中的类
2.5.1 问题分析和设计
2.5.2 人事记录类的实现
2.5.3 讨论
本章总结
练习
第3章 线性表
3.1 线性表的概念和表抽象数据类型
3.1.1 表的概念和性质
3.1.2 表抽象数据类型
3.1.3 线性表的实现:基本考虑
3.2 顺序表的实现
3.2.1 基本实现方式
3.2.2 顺序表基本操作的实现
3.2.3 顺序表的结构
3.2.4 Python的list
3.2.5 顺序表的简单总结
3.3链接表
3.3.1 线性表的基本需要和链接表
3.3.2 单链表
3.3.3 单链表类的实现
3.4 链表的变形和操作
3.4.1 单链表的简单变形
3.4.2 循环单链表
3.4.3 双链表
3.4.4 两个链表操作
3.4.5 不同链表的简单总结
3.5 表的应用
3.5.1 Josephus问题和基于“数组”
概念的解法
3.5.2 基于顺序表的解
……
第4章 字符串
第5章 栈和队列
第6章 二叉树和树
第7章 图
第8章 字典和集合
第9章 排序
前言
本书基于作者在北京大学用Python讲授相应课程的工作,用Python作为工作语言讨论数据结构和算法的基本问题,其撰写主要有下面几方面考虑:
作为以Python为第一门计算机课程之后相应的数据结构课程的教材。
结合数据结构和算法,讨论Python中重要数据类型的实现情况和性质,帮助读者理解Python语言程序,理解如何写出高效的Python程序。
展示Python的面向对象技术可以怎样运用。书中构造了一批相互关联的数据结构类,前面定义的类被反复应用在后续章节的数据结构和算法中。
基于这些情况,本书不但可以作为数据结构课程的教材,也可以作为学习Python语言编程技术的后续读物(假设读者已经有了Python编程的基本知识)。
由于Python语言的一些优点,近年来,国外已经有不少大学采用它作为第一门计算机科学技术课程的教学语言,包括许多一流大学。国内院校也可能参考这种趋势,出现这种变化。作者在北京大学数学学院开设了基于Python语言的程序设计和数据结构课程,通过亲身实践,发现用Python讲授这两门课程也是一种很好的安排。
用Python学习数据结构,最大的优点就是可以看到复杂的数据结构可以怎样一步步地从基本的语言机制构造起来。在一个章节里定义的数据结构,经常可以在后续章节的算法和数据结构中直接使用,如果不适用,常常可以通过简单的类派生来调整。还可以非常方便地用在各种习题和练习里,或用于解决实际问题。学生可以看到,书中的(或他们自己写的)代码不是玩具,而是切实有用的软件构件。在基于本书的课程中,很容易安排一些有一定规模的面向实际应用的开发课题,使学生得到更好的实际锻炼。
书中标*的节或小节作为选讲内容,或留给学生自己阅读。
本书的成型也得益于作者多年讲授基于C语言的数据结构课程的经验,张乃孝老师的《算法和数据结构》是作者一直使用的教材,本书在编写中也参考了该书的一些体例。此外,北京大学数学学院2013级的同学在学习中提出了许多很好的问题,参加课程辅导工作的刘海洋、胡婷婷、张可和陈晨也提供了很多帮助,在此表示特别的感谢。
裘宗燕
2015年8月于北京
书摘
不同成员。在为这种组合数据对象定义操作时,记住每个成员在对象里的位置并正确
使用,也会变成非常麻烦的事情。修改数据表示就更让人头痛了。
以上几点和其他一些情况都说明,简单地使用语言提供的数据组合机制,对于处理复杂程序里的数据组织问题是不够的。上面前两点表明的主要问题是,按照这种方式构造和使用的“有理数”不是一个类型,因此不能得到Python语言里的类型功能(如类型检查)的支持。第3点说明,简单地用元组等表示内部结构复杂的数据,经常会导致程序不易阅读和理解,使程序难以编写正确,难以修改。抽象数据类型的思想和支持这种思想的编程语言机制能帮助解决这些问题,至少是使问题大大缓解。
2.1.2抽象数据类型的概念
造成前一节中揭示出的编程缺陷,最重要的问题之一是数据的表示完全暴露,以及对象使用和操作实现对具体表示的依赖性。要克服这些缺点,就需要把对象的使用与其具体实现隔离开。理想情况是:在编程中使用一种对象时,只需考虑应该如何使用,不需要(最好是根本不能)去关注和触及对象的内部表示。这样的数据对象就是一种抽象数据单元,一组这样的对象构成一个抽象的数据类型,为程序里的使用提供了一套功能。

    推荐阅读