欢迎光临本店     登录 注册   加入收藏
  •   
欢迎光临清华大学出版社第三事业部!

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

当前位置: 首页 > 教材 > 本科和研究生教材 > 计算机类 > 数据结构与算法(C语言版)(第3版)

浏览历史

数据结构与算法(C语言版)(第3版)

数据结构与算法(C语言版)(第3版)

prev next

  • 商品货号:20150917002
  • 所属系列:高等院校计算机教育系列教材
    商品重量:0克
    作者:陈琳琳,李建林 主编
    出版社:清华大学出版社
    图书书号/ISBN:978-7-302-40253-4
    出版日期:2015-07-01
    开本:16开
    图书页数:400
    图书装订:平装
    图书规格:185mm×260mm
    版次:1
    印张:25
    字数:605000
  • 上架时间:2015-09-17
    商品点击数:3850
  • 定价:¥42.00元
    本店售价:¥42.00元
    注册用户:¥42.00元
    vip:¥39.90元
    黄金等级:¥37.80元
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:

内容简介:

商品附加资源

 内 容 简 介

“数据结构与算法”是计算机学科研究的主题之一。本书采用类C语言描述,系统地介绍了各种数据结构和排序、查找算法。全书共分为9章,主要内容包括数据结构与算法简介、线性表、栈和队列、串、数组及广义表、树和二叉树、图、查找和排序等。对于各种数据结构,本书给出了基本概念、抽象数据类型以及相关的操作,并且对各种算法的运行时间进行了分析。

本书对数据结构中的重点和难点内容进行了深入的剖析,着重培养学生的动手能力,对经典算法、重点算法及应用算法进行了详细的讲解,以使学生更好地掌握数据结构的应用。

本书可作为计算机及相关专业的大学本科教材,也可作为应用型专业以及成人教育、工程技术人员的培训教材。

 

前    言

  本书订正了第2版中的笔误、描述不规范等问题,简化了使用不多的内容;每章的编程项目都有完整的C程序实现代码,并都在VC++6.0环境下编译通过,运行正确。

  数据结构是计算机科学与技术专业的专业基础课,是十分重要的核心课程。它侧重于体系和思想上的训练,是程序设计的灵魂,为计算机语言课程设计提供了方法性的理论指导,所有的计算机系统软件和应用软件都要用到各种类型的数据结构。算法与数据结构之间存在着相辅相成的关系。解决一个问题既可以选择不同的数据结构,也可以选择不同的算法。数据结构的选择决定了算法执行所需要的时间与空间,影响算法的效率;反之,算法的优劣又决定了某个数据结构是否适合解决这个问题。

  全书共分为9章,由浅入深、系统地讨论了各种数据结构的基本概念和相关操作,还介绍了查找和排序算法。各章的具体内容介绍如下。

  第1章是绪论,介绍了学习数据结构和算法的意义、数据结构和算法的基本概念,并且指出了数据结构和算法之间的关系,给出了分析算法的方法。

  第2章主要介绍了线性表的概念、抽象数据类型及其基本操作,最后列举了一些线性表的应用实例。

  第3章主要介绍了受限制的线性表,即栈和队列;重点介绍了栈和队列的抽象数据类型及其实现,并列举了几个应用实例。

  第4章主要介绍了串这一非数值数据结构,包括串的抽象数据类型及其基本操作与串的模式匹配算法。

  第5章介绍了数组这一数据类型在计算机中的存储,重点介绍了稀疏矩阵在计算机中的压缩存储及其操作的实现,同时还介绍了广义表的概念。

  第6章讨论了树形结构及其相关算法。

  第7章讨论了图形结构及其相关算法。图形结构是一种复杂的数据结构,其应用也非常广泛,该章在介绍了图的遍历算法以后还采用遍历算法推导出了其他常用算法。

  第8章讨论了在线性表和树上的查找算法,还介绍了期望查找复杂度为O(1)的哈希表查找算法。

  第9章重点介绍了插入排序、选择排序、交换排序、归并排序和基数排序等算法及其思想和分析,在最后还介绍了外部排序算法。

  本书示例较多,讲解细致,对数据结构中的重点和难点内容进行了深入的剖析,着重培养学生的动手能力,突出实用性;对经典算法、重点算法及应用算法进行了详细的讲解,以使学生更好地掌握数据结构的应用。本书采用类C语言来描述算法。类C语言是伪码和C语言组合而成的一个描述工具,采用了C语言的核心部分,并为描述方便进行了扩充。

  本书可作为计算机及相关专业的大学本科教材,也可作为应用型专业以及成人教育、工程技术人员的培训教材。

  本书主要由陈琳琳、李建林任主编,由孙启虎、李橙、郭龙源任副主编。何光明、赵传申、许娟、王珊珊、石雅琴、郑爱琴、许悦、陈珍、陈凤、卢振侠、曹冬梅、杨橙、陈莉萍等人员在内容编写、程序测试、文字校对等工作中也付出了辛勤劳动,在此一并表示衷心的感谢!

  本书配有电子教案,并提供程序源代码,以方便读者自学,请到清华大学出版社网站下载。

  限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。

  

                                                                编  者

 

目    录

 

第1章  绪论 1

1.1  学习数据结构与算法的意义 1

1.1.1  学习数据结构的意义 1

1.1.2  学习算法的意义 2

1.2  数据结构 3

1.2.1  数据结构概述 3

1.2.2  基本概念 3

1.3  抽象数据类型 5

1.4  算法 6

1.4.1  算法概述 7

1.4.2  算法与数据结构之间的关系 8

1.4.3  算法的度量 8

1.5  算法分析 9

1.5.1  数学基础 9

1.5.2  所需分析的问题 11

1.5.3  运行时间的计算 11

1.5.4  检验你的分析 13

小结 15

自测题答案 16

编程项目 17

第2章  线性表 18

2.1  线性表的定义 18

2.1.1  线性表概述 18

2.1.2  线性表的抽象数据类型 19

2.1.3  线性表的相关操作 20

2.2  线性表的顺序存储结构 22

2.2.1  线性表的顺序存储结构 22

2.2.2  相关操作的实现 23

2.2.3  顺序存储结构的分析 29

2.3  线性表的链式存储结构 29

2.3.1  线性链表与相关操作实现 29

2.3.2  双向链表与相关操作实现 38

2.3.3  循环链表及其相关操作的

实现 41

2.3.4  链式存储结构分析 42

2.4  线性表的应用 43

2.4.1  一元多项式的抽象数据类型 43

2.4.2  多项式的顺序表实现 43

小结 46

自测题答案 47

编程项目 48

第3章  栈和队列 49

3.1  栈 49

3.1.1  栈概述 49

3.1.2  栈的实现 50

3.1.3  栈的实现方式比较 54

3.2  栈的应用 55

3.2.1  平衡符号 55

3.2.2  表达式求值 57

3.2.3  函数调用 61

3.2.4  递归与栈 62

3.3  队列 67

3.3.1  队列概述 67

3.3.2  队列的实现 69

3.3.3  队列实现方法比较 76

3.4  队列的应用 76

3.4.1  排列问题 76

3.4.2  非排列问题 77

小结 79

自测题答案 79

编程项目 81

第4章  串 82

4.1  串的定义 82

4.1.1  串 82

4.1.2  串的抽象数据类型 83

4.2  串的存储实现 84

4.2.1  串的顺序存储结构 84

4.2.2  串的链式存储结构 87

4.3  串的模式匹配 88

4.3.1  简单模式匹配算法 88

4.3.2  KMP算法 90

4.3.3  其他模式匹配算法 94

小结 96

自测题答案 97

编程项目 98

第5章  数组及广义表 99

5.1  数组的定义 99

5.1.1  数组的基本概念 99

5.1.2  数组的抽象数据类型 100

5.2  数组的顺序存储 101

5.2.1  数组的顺序存储方式 101

5.2.2  数组的顺序存储的

基本操作 102

5.3  矩阵的压缩存储 104

5.3.1  特殊矩阵 104

5.3.2  稀疏矩阵 107

5.4  广义表 115

5.4.1  广义表的定义 115

5.4.2  广义表的存储 117

5.4.3  广义表的基本操作 118

小结 122

自测题答案 123

编程项目 125

第6章  树和二叉树 126

6.1  树的定义与基本操作 126

6.1.1  树的定义与相关术语 126

6.1.2  树的抽象数据类型 128

6.2  二叉树 129

6.2.1  二叉树的定义与基本操作 129

6.2.2  二叉树的性质 131

6.2.3  二叉树的存储结构 133

6.2.4  二叉树的遍历 135

6.2.5  线索化二叉树 140

6.3  树和森林 144

6.3.1  树的存储结构 144

6.3.2  森林、树、二叉树的

相互转化 147

6.3.3  树和森林的遍历 148

6.4  哈夫曼树与哈夫曼编码 149

6.4.1  哈夫曼树 150

6.4.2  哈夫曼编码 153

小结 157

自测题答案 158

编程项目 160

第7章  图 161

7.1  图的定义 161

7.1.1  图的定义和相关术语 161

7.1.2  图的抽象数据类型 165

7.2  图的存储方式 166

7.2.1  数组表示法 167

7.2.2  邻接表法 169

7.2.3  十字链表法 171

7.2.4  邻接多重表 173

7.3  图的遍历 175

7.3.1  深度优先遍历 175

7.3.2  广度优先遍历 177

7.4  图的连通性 180

7.4.1  无向图的连通性 180

7.4.2  有向图的连通性 183

7.5  最小生成树 184

7.5.1  基本概念 184

7.5.2  Prim算法 185

7.5.3  Kruskal算法 187

7.6  最短路径 189

7.6.1  从某个顶点到其余各顶点的

最短路径 189

7.6.2  所有点对的最短路径 192

7.7  有向无环图的应用 195

7.7.1  拓扑排序 195

7.7.2  求解关键路径 199

小结 204

自测题答案 205

编程项目 209

第8章  查找 210

8.1  线性表上的查找 210

8.1.1  顺序表上的查找 210

8.1.2  有序表上的查找 211

8.1.3  索引顺序表上的查找 215

8.1.4  线性表上的查找算法比较 217

8.2  树上的查找 218

8.2.1  二叉排序树 218

8.2.2  平衡二叉树 226

8.2.3  B-树 233

8.3  哈希表 241

8.3.1  哈希表概述 241

8.3.2  哈希函数的构造 242

8.3.3  冲突的解决方法 245

8.3.4  哈希表的查找分析 251

小结 252

自测题答案 254

编程项目 257

第9章  排序 258

9.1  插入排序 258

9.1.1  直接插入排序 259

9.1.2  折半插入排序 260

9.1.3  2路插入排序 261

9.1.4  希尔排序 263

9.2  交换排序 266

9.2.1  冒泡排序 266

9.2.2  快速排序 267

9.3  选择排序 271

9.3.1  直接选择排序 271

9.3.2  树形选择排序 273

9.3.3  堆排序 274

9.4  归并排序 278

9.5  基数排序 281

9.6  各种内部排序方法比较 283

9.7  外部排序 286

9.7.1  选择外部排序的理由 286

9.7.2  简单外部排序算法 287

9.7.3  多路合并排序 289

9.7.4  替换-选择排序 289

小结 292

自测题答案 293

编程项目 296

附录  各章编程项目参考答案 297

参考文献 391

 

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha