基本信息
- 原书名:Data Structures and Algorithms in C++ Second Edition
- 原出版社: Thomson
- 作者: Adam Drozdek
- 译者: 陈曙晖
- 丛书名: 国外计算机科学经典教材
- 出版社:清华大学出版社
- ISBN:7302063966
- 上架时间:2003-5-16
- 出版日期:2003 年4月
- 开本:16开
- 页码:564
- 版次:2-1
- 所属分类:计算机 > 计算机科学理论与基础知识 > 数据结构
计算机 > 计算机科学理论与基础知识 > 计算理论 > 算法
教材 > 研究生/本科/专科教材 > 工学 > 计算机
教材 > 计算机教材 > 本科/研究生 > 计算机专业教材 > 计算机基础课程 > 算法与数学基础
内容简介
计算机书籍
本书是一本介绍数据结构与算法的优秀书籍。
本书系统介绍了C++面向对象程序设计、算法复杂度、链表、栈、队列、递归、树、图、排序和查找算法、散列技术、数据压缩算法、内存管理等内容;尤其对递归算法进行了深入剖析。在附录中详细介绍了大O符号与标准模板库;在大多数章中提供了相应的实例分析和程序设计作业。
本书适合作为计算机软件专业或其他相关专业的教科书。对于需要参加计算机考试,或者希望自学计算机软件开发的人员也有非常大的帮助。
本书以案例驱动的方式,全面介绍了计算机科学的重要领域——数据结构,并以目前应用最为广泛的C++语言实现相关的算法。书中不仅特别强调了数据结构与算法之间的联系,包括算法复杂度分析,而且介绍了面向对象程序设计环境中的数据结构,重点讲述了隐藏信息封装和分解处理的原理。
与同类教材相比,本书不仅提供了任何软件系统从设计、实现、测试到维护所需的基本概念,详尽地讨论了同类教材中少见的内存管理和数据压缩主题,还将对递归的讨论置于运行时堆栈环境中,使读者对递归有更明晰的理解。此外,本书各章(第2章除外)提供了一个可供测试的程序分析以演示特定的数据结构和算法,并将相关C++标准模板库应用在程序分析中。贯穿全书的C++示例代码演示了数据结构的实践价值,精心设计的程序设计课后作业可以使学生能够学以致用。因此,无论是对数据结构的初学者,还是对有一定基础的学生,本书都是一本不可多得的新型数据结构教材。
目录
1.1 抽象数据类型
1.2 封装
1.3 继承
1.4 指针
1.4.1 指针和数组
1.4.2 指针和复制构造函数
1.4.3 指针和折构函数
1.4.4 指针和引用变量
1.4.5 函数指针
1.5 多态性
1.6 C++和面向对象程序设计
1.7 标准模板库
1.7.1 容器
1.7.2 迭代器
1.7.3 算法
1.7.4 函数对象
1.8 标准模板库中的向量
1.9 数据结构与面向对象编程
前言
本书突出了数据结构中三个重要方面。首先,强调了数据结构与它们的算法之间的联系,包括分析算法的复杂度。接着,依照当前的设计和实现范例,使用面向对象的方法来介绍数据结构。特别强调了有助于信息的封装与分解的信息隐藏原理。最后,本书的一个重要组成部分是数据结构的实现,它选择C++作为程序语言。
C++语言,作为C语言面向对象的后裔,在业界和学术界得到了广泛的应用,是一种非常优秀的程序语言。自然地,我们就选用C什来介绍数据结构。虽然人们也使用过Modula—2和Ada语言来讲授数据结构,但是传统上一直是使用Pascal来讲授数据结构。而且,由于C++语言在应用程序设计中的广泛使用以及这门语言面向对象的特性,使用它来讲授数据结构和算法课程(即使是入门级的课程)是非常合理的。
这本书适合作为教材,它包括旧的ACM(美国计算机协会)课程中CS2和CS7下所列的全部主题。同样,它也能满足新的ACM课程中CA202、CD202和CF204的大部分要求。
我们在大多数章节中都包括了一个实例分析,它阐明了一个完整的、使用特定算法和数据结构的环境为了说明所论述的主题的广泛应用范围,这些实例分析都是从计算机科学的不同领域中挑选出来,包括解释程序、符号计算和文件处理。
本书自始至终包含了简要的C++程序例子,举例说明数据结构在实践中的重要性。然而,理论分析同样也很重要,所以算法的介绍都结合了对算法效率的分析。
要特别留意关于递归的介绍,因为即使是最高明的学生在这个方面往往也会出现一些问题。经验表明,如果考虑运行时栈的话,就可以极好地说明递归的含义。当对一个递归函数进行跟踪的时候,我们不但在此章节里面显示出了栈的变化,而且在其他章节里同样也做到了这一点。比如说,如果我们不对系统在运行时栈上所做的工作进行解释的话,那么就算是一个短小的树遍历函数也可能难于理解。在讨论数据结构和算法的时候,脱离系统和纯理论的方法没有什么用处。
这本书讨论的重点是数据结构,而附带介绍其他一些主题仅仅是为了更好地理解数据结构。算法都是从数据结构的角度来进行讨论的,所以读者将无法找到各种算法的全面讨论,也无法找到完整介绍一个算法所需要的各方面的内容。然而,正如前面所提到过的,本书对递归的介绍具有一定的深度。另外,对算法的复杂度分析也比较详细。
第1—8章介绍了许多不同的数据结构以及使用这些数据结构的算法。并且分析了每一种算法的效率,同时给出了改进算法的建议。
●第1章介绍了面向对象程序设计的基本原理,介绍了动态内存分配、指针的使用以及标准模板库(Standard Template Library,STL)。
●第2章讲述了一些评价算法效率的方法。
●第3章介绍了不同类型的链表,并且着重阐述了其指针实现。
●第4章介绍了栈、队列及其应用。
●第5章对递归进行了详细讨论。讨论了不同类型的递归,并对其中的一个递归调用进行了剖析。
●第6章讨论了二叉树,包括二叉树的实现、遍历和搜索。在这一章中还介绍了平衡树。
●第7章详细介绍了更一般化的树,比如森林、2—4树、B树。
●第8章介绍图。
第9—12章给出了在前面的章节里所介绍的数据结构的不同应用,并强调了这些应用在数据结构方面的问题。
●第9章详细介绍了排序,以及一些基础的和非基础的方法。
●第10章讨论了散列(hashing),它是搜索算法中最重要的主题之一。在强调数据结构使用的同时介绍了各种各样的技术。