首页 > 图书中心 >图书详情
数据结构(用面向对象方法与C++描述)
作者:殷人昆等
定价:26元
印次:1-18
ISBN:9787302034056
出版日期:1999.07.01
印刷日期:2006.04.06
数据结构是计算机专业的核心课程,是从事计算机软件开发、应用人员应当必备的专业基础。随着计算机的日益普及,数据结构已成为计算机软件考试的必考课程之一。本书是根据作者在北京清华大学及美国密西根州Grand Valley州立大学多年教学的经验,并参考了近年出版的多种国外大学数据结构和面向对象软件工程教科书编写的。内容包括:数组、链接表、栈和队列、递归、树与森林、图、堆与优先级队列、集合与搜索结构、排序、索引结构与散列等。书中采用面向对象的观点讨论数据结构技术,并以兼有面向过程和面向对象双重特色的C++语言作为算法的描述工具,强化基本知识和基本能力的双基训练。全书条理清晰,通俗易懂,图文并茂,适于自学。 本书适合作大专院校中计算机或软件专业的教材,也可供计算机软件人员和计算机用户阅读。
more >由于计算机的普及,极大地改变了人们的生活。目前各个行业、各个领域都与计算机建立了紧密的联系。这也随之带来了开发各种软件的需求。为了能够以最少的成本,最快的速度,最好的质量开发出合乎需要的软件,不能再像以前那样,把软件看作是个人雕琢的精品,必须遵循软件工程的原则,把软件的开发、维护活动标准化、工程化。就软件产品而言,最重要的就是建立合理的软件体系结构和程序结构,设计有效的数据结构。因此,为能做好软件开发工作,必须了解应如何组织各种数据在计算机中的存储、传递和转换。这样,《数据结构》这门课程显得格外重要。自1978年美籍华裔学者冀中田在国内首开这门课程以来(当时作者也在场),经过20余年的发展,这门课程已成为各大学计算机专业本科的主干课程,也成为非计算机类学生和研究生学习计算机的必修课程。 《数据结构》课程脱胎于《离散数学结构》,它涉及各种离散结构(如向量、集合、树、图、代数方程、多项式等)在计算机上如何存储和处理。其内容丰富,涉及面广泛,而且还在随各种基于计算机的应用技术的发展,不断增加新的内容。特别是面向对象技术出现以后,人们认识到,用它开发出来的软件体系结构更加符合人们的习惯,质量更容易得到保证,尤其是对使用者和用户不断提出的新的需求,更容易适应。因此,在国际上,面向对象技术得到迅速普及,出现了大批面向对象的软件开发工具。为了适合形势的要求,有必要开设结合面向对象技术的数据结构课程。 用面向对象的观点讨论数据结构,与传统的面向过程的讲法相比,变化较大。各种数据结构的讨论都是基于抽象数据类型和软件复用的。有新意,也有继承。我们力图与过去的讲授体系保持一致,但又必须引入一些新的概念。为了能够让读者容易学习,我们对内容进行了精选。许多概念,如双端堆、二项堆、最小-最大堆、斐波那契堆、左斜树、扁树、红-黑树、B*树这些从基本数据结构派生出来的都舍去了。同时,把动态存储管理部分归到《操作系统》课程,把文件组织部分归到《数据库原理》,只保留重要的应用最广泛的一些结构。对这些结构做全面深入的讲解。阐明数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种典型事例说明它们在解决应用问题时的动态行为和各种必要的操作。并以C++语言为表述手段,介绍在面向对象程序设计过程中各种数据结构的表达和实现。只要是学过C或PASCAL语言,就能够很容易地阅读和理解。并因此学习C++语言,提高读者的软件设计和编程能力。 本书是作为清华大学计算机系的《数据结构》教科书编写的。它的作者是在清华大学和美国密西根州Grand Valley州立大学从事《数据结构》第一线教学的教师。他们有着丰富的数据结构和软件工程教学的经验,教学效果良好。陶永雷教授1997年春专程回国参加教材的编写工作。陶教授根据他在美国讲授软件工程和数据结构课程的经验,就内容选择、讲授体系、习题选编提出了很多建议,并帮助我们搜集了多种在美国受欢迎的数据结构方面的参考书和实验指导书,亲自审查和修改了全书的类声明和程序。北方交通大学盛绚华副教授亲自带领该校通控系一些同学对这些程序进行了验证。全书的执笔由清华大学计算机系《数据结构》课程讲员殷人昆和谢若阳担任。 全书共分10章,第1章是预备知识,主要介绍什么是数据,数据与信息的关系;什么是数据结构,数据结构的分类。通过学习,读者能够了解抽象数据类型和面向对象的概念,并对对象、类、继承、消息以及其它关系的定义、使用有基本认识。由于我们选择了具有面向过程和面向对象双重特点的C++语言,可以帮助读者自然而轻松地从传统程序设计观念向面向对象方法转变。在这一章的最后还讨论了算法设计和简单的算法分析方法。 第2章和第3章是全书的基础,讨论了数组和链表结构,以及利用它们定义出来的各种结构,如顺序表、代数多项式、稀疏矩阵、字符串等。通过学习,读者可以了解对象和类的基本实现,并通过模板、继承、多态性等的使用,以及游标类的引入,对数据抽象概念有进一步的理解。 第4章引入三种存取受限的表,即栈、队列和优先级队列。通过对它们的定义、实现和应用的深入介绍,使读者能够了解在什么场合使用它们,为以后更复杂数据结构和算法的实现,提供了多种辅助手段。 第5章介绍在许多领域中经常遇到的递归程序设计概念,以及递归的非递归实现问题。在本章的后半部分重点介绍了广义表,这是一种应用广泛又十分灵活的结构。它的递归结构导致了它的许多操作的递归实现,从而加深对递归的认识。 第6章和第8章介绍在实际应用中最重要的非线性结构——树与图。在管理、电子设计、机械设计、日常生活中许多方面都会用到它们。 第7章和第10章介绍集合、查找、索引、散列。在实际与信息处理相关的应用中,这些结构十分重要。许多非数值处理都涉及到这些结构,它们与内存、外存上的数据组织关系密切,如在外存组织文件时全面应用了这些结构。它们又是许多新结构的生长点。因此,读者学习这些内容将获益匪浅。 第9章介绍排序。这也是应用十分广泛的技术。只要是数据处理,就少不了排序。如何才能高效地完成排序,本章分别就内、外存使用的多种排序方法进行介绍和讨论,读者可以深入了解排序的机制,并也能从中学到许多程序设计的技巧。 本书的篇幅虽然较大,但给读者一个选择,可以根据时间、能力,适当对全书需要学习的内容加以剪裁。本着少讲多练的原则,可以对每种结构只介绍类定义和关键操作的实现,其它内容可以让同学自学。通过上机练习,加深理解。在本书目录中加*的章节可以酌情不讲。 在本书的成书过程中得到计算机系领导的关心,清华大学出版社的支持。此外,清华大学计算机系1994级全体150多位同学和中文系1994级6位同学参加了资料的翻译、整理工作。
more >