数据结构

出版时间:2010-3  出版社:清华大学出版社  作者:管致锦 等编著  页数:287  

前言

  数据结构是计算机科学各专业以及其他相近专业的核心课程之一,其研究对象为问题求解方法、程序设计方法和典型的数据结构算法。  本书根据现代教育教学特点,充分考虑到一般本科院校学校计算机及其相关专业的现状,严格遵循教育部计算机及相关专业研究生考试大纲的要求,吸收国外教材的一些新思想,既有创新,又兼顾了传统教材的优点。把教师的教学要求与学生学习、实际工作需要和进一步深造等需求紧密结合起来。  本书既考虑数据结构的组织方式,又强化算法的实践与应用。采用自上而下的设计方法,从抽象的数据结构描述到数据结构的组织,再到操作的具体实现,并通过实例说明应用方法。这种组织方法的目的是:为了使学生在学习过程中更好地分析研究计算机加工数据的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作方法,通过程序设计实现相应的算法,求得相关问题的解,并能掌握算法的时间分析和空间分析技术。使学生通过实现算法的复杂程序训练,编写出结构清晰、正确易读、符合软件工程规范的程序。使教师方便组织教学内容,教学过程结构清晰,内容循序渐进易于讲解。  本书使用标准C++作为数据结构和算法的描述语言。采用C++语言中的类来表示抽象数据类型(ADT);尽可能用C++的类和面向对象结构来实现数据结构的算法。对基本的数据结构采用面向对象的方法,将数据与对象封装成类,以便在其他应用程序中直接使用。  本书读者应已经修完程序设计课程并熟悉标准C++语言,所使用的C++代码均在VC++编译器上全部通过测试。  本书是多位老师多年来从事数据结构教学的智慧和经验的结晶,提供了丰富的教学辅助手段,其配套教材有《数据结构实践教程》和《数据结构学习指导与习题集》,同时由清华大学出版社出版。这些辅助教材为数据结构课程的教学和学习提供了有效的保障。数据结构前言本书第1章、第6章和第7章由管致锦编写,第2章~第5章由徐慧编写,第8章和第9章由陈德裕编写,全书的统稿由管致锦负责。杭月芹、顾颀、周建美、丁卫平、陈苏蓉、顾卫江、丁红、章雅娟、周洁、朱颖等对本书进行了详细审阅,并提出了宝贵意见。聂志浪、赵戈杰、凡刚、陈惊雷、禹杰等同学完成了本书大部分算法代码的测试工作。  本书及其配套教材编写和实践过程历时3年,尽管做了大量的努力,也难免存在不妥和错误之处,恳请读者予以指正,我们也会在适当时间进行修订和补充,同时对教材中引用和参考的其他同行的文献资料在此一并致以感谢。

内容概要

本书根据数据结构的特点,充分考虑到教师教学、学生学习与进一步深造,以及相关人员实际工作需要,在处理好数据结构的组织方式和强化算法的实践与应用的同时,使学生通过实现算法的复杂程序训练,编写出结构清晰、正确易读、符合软件工程规范的程序;使教师方便组织教学内容,教学过程结构清晰,内容循序渐进且易于讲解。    本书符合教育部计算机及相关专业研究生考试大纲对数据结构内容的要求。    本书使用C++作为数据结构和算法的描述语言。采用C++语言中的类来表示抽象数据类型(ADT),用C++的类和面向对象结构实现数据结构的算法。所使用的C++代码在Visual C++编译器上全部通过测试。    为了方便本书的学习和教学,提供有配套教材《数据结构实践教程》、《数据结构学习指导与习题集》和相关的学习课件,本系列教材的所有源代码都可以从清华大学出版社网站(http://www.tup.corn)上免费下载。    本书可作为计算机类及其相关专业的教材,也可供从事计算机工程与应用的科技工作者参考。

书籍目录

第1章 绪论  1.1 数据结构的概念    1.1.1 引言    1.1.2 数据结构的发展及其在计算机科学中所处的地位    1.1.3 什么是数据结构    1.1.4 有关概念和术语  1.2 数据类型和抽象数据类型    1.2.1 数据类型    1.2.2 抽象数据类型  1.3 算法和算法分析    1.3.1 算法特性    1.3.2 算法描述    1.3.3 算法性能分析与度量第2章 线性表  2.1 线性表的类型定义  2.2 线性表的顺序存储结构及实现    2.2.1 线性表的顺序存储    2.2.2 顺序表的实现  2.3 线性表的链式存储结构及实现    2.3.1 线性表的链式存储    2.3.2 单链表的实现    2.3.3 其他形式的链表  2.4 线性表的其他存储方法    2.4.1 顺序存储与链式存储的比较    2.4.2 静态链表    2.4.3 间接寻址  2.5 线性表应用举例第3章 特殊线性表  3.1 栈    3.1.1 栈的逻辑结构    3.1.2 栈的顺序存储结构及实现    3.1.3 栈的链式存储及实现    3.1.4 顺序栈和链栈的比较    3.1.5 栈的应用举例  3.2 队列    3.2.1 队列的逻辑结构    3.2.2 队列的顺序存储结构及实现    3.2.3 队列的链式存储及实现    3.2.4 队列的应用第4章 串及其模式匹配  4.1 串的定义    4.1.1 串的相关概念    4.1.2 串的抽象数据类型定义  4.2 串的存储结构    4.2.1 串的顺序存储结构    4.2.2 串的链式存储结构    4.2.3 串的索引存储结构    4.2.4 串的堆存储  4.3 顺序串的实现    4.3.1 常用C++字符串函数    4.3.2 串类  4.4 串操作举例  4.5 模式匹配第5章 广义线性表  5.1 数组    5.1.1 数组的定义    5.1.2 数组的顺序存储   5.2 矩阵的压缩存储   5.2.1 特殊矩阵的压缩存储    5.2.2 稀疏矩阵的压缩存储    5.2.3 稀疏矩阵的运算  5.3 广义表  ……第6章 树和二叉树第7章 图第8章 查找第9章 排序参考文献

章节摘录

  算法(algorithm)是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。一个算法应该具有下列特性。  (1)有穷性。一个算法必须在有穷步之后结束,即必须在有限时间内完成。  (2)确定性。算法的每一步必须有确切的定义,无二义性.算法的执行对应着相同的输入仅有唯一的一条路径。  (3)可行性。算法中的每一步都可以通过已经实现的基本运算的有限次执行得以实现。  (4)输入。一个算法具有零个或多个输入,这些输入取自特定的数据对象集合。  (5)输出。一个算法具有一个或多个输出,这些输出同输入之间存在某种特定的关系。  算法的含义与程序十分相似,但又有区别。一个程序不一定满足有穷性。例如操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。另一方面,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定实现。一个算法若用程序设计语言来描述,则它就是一个程序。  算法与数据结构是相辅相成的。解决某一特定类型问题的算法可以选定不同的数据结构,而且选择恰当与否直接影响算法的效率。反之,一种数据结构的优劣由各种算法的执行来体现。  要设计一个好的算法通常要考虑以下要求。  (1)正确性。算法的执行结果应当满足预先规定的功能和性能要求。  (2)可读性。一个算法应当思路清晰、层次分明、简单明了、易读易懂。  (3)健壮性。当输入不合法数据时,应能作适当处理,不至于引起严重后果。  (4)高效性。有较高的时间效率并能有效使用存储空间。

图书封面

评论、评分、阅读与下载


    数据结构 PDF格式下载


用户评论 (总计2条)

 
 

  •   跟数据结构实践教程配合使用很好
  •   这本配套教程有很多例子,都很实用,
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7