





定价:89元
印次:3-5
ISBN:9787302586623
出版日期:2021.09.01
印刷日期:2025.01.09
图书责编:杨帆
图书分类:教材
错误修订:149页第3行“这个模式……算法。”改为“朴素算法英文叫 brute-force search,其中 brute-force 是暴力或者是穷举的意思。”。 ---内容简介: “数据结构”是计算机专业的核心课程,是从事计算机软件开发和应用的人员应当必备的专业基础。随着计算机的日益普及,“数据结构”课程也在不断发展。 本书按照清华大学计算机科学与技术系本科“数据结构”大纲的要求,从面向对象的概念、对象类设计的风格和数据结构的层次开始,从线性结构到非线性结构,从简单到复杂,循序渐进,逐步深入地讨论了各种数据结构的内在的逻辑关系及它们在计算机中的实现方式和使用。此外,本书对常用的迭代、递归、回溯等算法设计技巧,搜索和排序算法等都做了详尽描述,并引入了简单的算法分析。 全书采用了面向对象的观点讨论数据结构技术,并以兼有面向过程和面向对象双重特色的C++语言作为算法的描述工具,强化基本知识和基本能力的双基训练。全书条理清晰,通俗易懂,图文并茂,适于自学。 本书适合于大专院校计算机或软件专业本科生使用,也可作为教师和有关科研人员的参考书。与本书配套的《数据结构精讲与习题详解(C语言版)(第2版)》一书已由清华大学出版社出版。此外,需要PowerPonit电子教学幻灯片的教师,可与清华大学出版社联系。
清华大学计算机系教授,1970年清华大学计算数学专业毕业,1980年清华大学计算机系软件研究生毕业并获得工学硕士学位,1985年赴日本国东京理科大学做访问学者,研究方向为软件工程过程的质量管理和软件产品的质量评价。现已退休。主要教学工作:多年为清华大学计算机系大学本科《数据结构》、《软件工程》和研究生《软件工程设计与技术》、《软件项目管理》课程负责人,并主持教育部-微软精品课程《数据结构》的建设。曾与人合作或单独编写和出版教材二十余本,其中,《数据结构》教材被评为教育部十一五规划教材,并获得北京市精品教材。在职期间参加多项科研项目,在核心刊物和专业会议发表多篇论文。
前言 计算机的普及极大地改变了人们的工作和生活。目前各个行业、各个领域都与计算机建立了紧密的联系,也随之带来了开发各种软件的需求。为了能够以最小的成本、最快的速度、最好的质量开发出合乎需要的软件,必须遵循软件工程的原则,把软件的开发和维护标准化、工程化,不能再像以前那样,把软件看作是个人雕琢的精品。就软件产品而言,最重要的就是建立合理的软件体系结构和程序结构,设计有效的数据结构。因此,要做好软件开发工作,必须了解如何组织各种数据在计算机中的存储、传递和转换。这样,“数据结构”这门课程显得格外重要。自1978年美籍华裔学者冀中田在国内首开这门课程以来(当时作者也在场),经过40余年的发展,本课程已成为各大学计算机专业本科的主干课程,也成为非计算机类学生和研究生学习计算机的必修课程。 “数据结构”课程脱胎于“离散数学结构”,它涉及各种离散结构(如向量、集合、树、图、代数方程、多项式等)在计算机上如何存储和处理。其内容丰富,涉及面广,而且还在随各种基于计算机的应用技术的发展,不断增加新的内容。特别是面向对象技术出现以后,人们认识到,用它开发出来的软件体系结构更加符合人们的习惯,质量更容易得到保证,尤其是更容易适应使用者和用户不断提出的新的需求。因此,在国际上,面向对象技术得到迅速普及,出现了大批面向对象的软件开发工具。为了适合形势的要求,有必要开设结合面向对象技术的“数据结构”课程。 用面向对象的观点讨论数据结构,与传统的面向过程的讲法相比,变化较大。各种数据结构的讨论都是基于抽象数据类型和软件复用的,有新意,也有继承。我们力图与过去的讲授体系保持一致,但又必须引入一些...
第1章数据结构概论1
1.1数据结构的概念1
1.1.1数据结构举例1
1.1.2数据与数据结构2
1.1.3数据结构的分类3
1.1.4“数据结构”课程的内容4
1.2数据结构的抽象形式6
1.2.1数据类型6
1.2.2数据抽象与抽象数据类型7
1.3作为ADT的C++类9
1.3.1面向对象的概念9
1.3.2C++中的类10
1.3.3C++中的对象12
1.3.4C++的输入输出13
1.3.5C++中的函数14
1.3.6动态存储分配17
1.3.7C++中的继承18
1.3.8多态性19
1.3.9C++的模板23
1.4算法定义24
1.5算法性能分析与度量25
1.5.1算法的性能标准26
1.5.2算法复杂性度量26
1.5.3算法的渐进分析31
1.5.4最坏、最好和平均情况35
习题36
第2章线性表40
2.1线性表的概念40
2.1.1线性表的定义40
2.1.2线性表的类定义41
2.2顺序表42
2.2.1顺序表的定义和特点42
2.2.2顺序表的类定义及其操作42
2.2.3顺序表的性能分析47
2.2.4顺序表的应用49
2.3单链表49
2.3.1单链表的概念50
2.3.2单链表的类定义51
2.3.3单链表中的插入与删除52
2.3.4带附加头结点的单链表54
2.3.5单链表的模板类56
2.4线性链表的其他变形62
2.4.1循环单链表62
2.4.2双向链表65
2.5单链表的应用: 多项式及其运算69
2.5.1多项式的...