首页>参考读物>计算机科学与技术>计算机科学理论与基础知识

零基础学数据结构 第2版
作者 : 陈锐 成建设 等编著
出版日期 : 2014-07-01
ISBN : 978-7-111-46861-5
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 485
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

本书特色
⊙ 由浅入深,循序渐进,从零开始学数据结构,一点都不难
⊙ 编程基础、编程进阶、编程应用、项目实战、上机练习
⊙ 实例讲解+综合项目开发+配套学习练习题

超值、大容量DVD
⊙ 本书教学视频
⊙ 本书例题源代码
⊙ 本书教学PPT

本书技术支持
⊙ 邮箱:nwuchenrui@126.com
⊙ QQ群:216732263

丛书特色
⊙ 零门槛学习,没有任何基础便可轻松掌握 ⊙ 每个知识点都对应相应的实例讲解,容易理解
⊙ 给出编程经验、编程陷阱、编程技巧和编程谬误 ⊙ 提供上机实践练习题和常见面试题及解答
⊙ 源代码提供了详细的注释,阅读起来无障碍 ⊙ 提供典型案例帮助读者提高开发水平
⊙ 提供配套的多媒体教学视频,学习效果更好 ⊙ 提供了专门的售后服务论坛

高级程序员,硕士,中国计算机学会会员,毕业于西北大学计算机应用计算专业,主要研究方向:自然语言处理、数据结构与算法,发表核心期刊论文多篇,出版著作有:《零基础学数据结构》、《C语言从入门到精通》、《C语言入门与提高》、《C/C++函数与算法速查手册》、《Visual Basic多功能教材》。

本书精华内容
● 数据结构概述
● 学好数据结构的秘诀
● C语言基础
● 线性表
● 栈
● 队列
● 串
● 数组
● 广义表
● 树
● 图
● 查找
● 内排序
● 哈夫曼树
● 扩展线性链表存储结构
● 动画模拟停车场管理系统
● 一元多项式的表示与相乘

图书前言

《零基础学数据结构》自问世以来,已被许多高校选为数据结构教材,得到了众多读者的关心和问候,受到读者的喜欢和好评。广大读者非常期待第2版,同时对本书的修订提出了不少宝贵意见。有这么多热心读者关心本书,我感到非常欣慰,在此也对所有关注本书的朋友们说声谢谢!希望更多的朋友关注本书,以及提出更多的改进建议。
经过修订后,本书案例更加丰富,语言表达更加简练、准确,替换了部分重复性的案例,保留了精华内容,修订了书中的错误和不足之处,保证所有程序能正确运行,视频讲解更加针对重点、难点进行分析。
“数据结构”作为计算机专业的一门专业基础课程,对于初学者来说,许多专业术语较为抽象,不容易理解和掌握,本书采用通俗的语言进行讲解,针对每个知识点都给出例子和图表,便于读者理解和掌握。本书内容全面,涵盖数据结构的所有知识点,全书算法采用C语言实现,所有代码均在Visual C++ 6.0环境下调试通过,所有案例都是完整程序,能直接运行。
本书不仅适合正在学习数据结构的学生作为自学教材,也适合作为计算机专业学生考研辅导用书和参加软考人员的辅导书。
修订的内容
1.更正了书中的错误
本书第1版有些算法描述中存在一些不易察觉的错误,第2版重新对书中代码进行了全部调试,把错误的地方一一更正。根据读者提出的宝贵建议,对第1版中一些错误的表述也进行了修改。
2.修订了书中的内容
本书第1版有些概念描述不够准确,第2版对所有已发现的不恰当地方进行了修改,在不易理解的地方增加了图表,重新表述了许多概念和定义,使本书更易于理解,而且增加了近年考研题目,内容更加完善。
3.补充替换书中的案例
这次改版,删除了第1版的一些案例,并补充了一些较大型的案例,如迷宫问题、模拟停车场管理系统等,增加了近两年的考研算法试题,减少了一些重复性的案例,保留了一些具有代表性的案例,使本书更加实用。
4.视频讲解突出重点、难点
在本书配套的视频中,作者针对数据结构中的一些重点和难点部分进行详细分析,特别是对一些典型案例做了详细分析,通过学习本书并结合视频讲解,可使每一位读者都能真正理解并掌握数据结构中的每一个知识点。
本书的第1~4章和第9章由陈锐编写,第7~8章由成建设编写,第5章由张立编写,第6章由李得强编写,其他章节由李铁塔、蔡洪涛、付海涛、段小涛、申文彬、郑苗苗编写。
为什么要学数据结构
如果你打算今后从事软件开发,或从事计算机科研、教学等工作,必须要学好数据结构这门课程。首先,因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它;其次,数据结构是计算机软考、计算机等级考试等相关考试的必考内容之一,要是想顺利通过这些考试,你也必须学好它;最后,数据结构还是你今后毕业,进入各软件公司、事业单位的必考内容之一,想要找到好工作,也必须学好它。
即使你没有以上考虑,作为一名计算机从业人员,数据结构是其他后续计算机专业课程的基础,许多课程都会用到数据结构知识。有如此多的理由,你必须掌握好数据结构。
如何学好数据结构
对于初学者来说,数据结构这门课有许多抽象的东西,不是太容易掌握。万事开头难,只要你掌握了方法和技巧,学任何东西就会变得很容易,学习数据结构也是如此。要想学好数据结构,首先应该有信心,要有战胜困难的决心,特别一开始不要有畏惧心理,这一点很重要;其次就是要掌握好C语言,C语言是基础,因为本书中的算法都是用C语言描述的(其他大多数数据结构图书也采用C语言描述),即使之前没有掌握好C语言也没有关系,只要有C语言基础就行,可以边学数据结构边巩固C语言知识。
有了以上两点,你就离成功不远了,数据结构也没有那么可怕,其实就是概念抽象了点,本书已经进行了通俗的讲解,再多联系实际生活,学习数据结构就会变得很轻松。
最后一点就是多上机,多思考,本书中所有算法都用C语言表述,并给出完整程序,你只需要把程序看懂,然后上机多调试,锻炼C语言的应用技巧,对数据结构中的一些算法思想就可以融会贯通,真正领会其中的内涵。
如何使用本书
本书全面讲解了数据结构的相关知识,案例非常丰富,第2版加入了作者对数据结构的理解,还修订了很多错误和不足之处。本书用通俗易懂的语言描述抽象的概念,配套视频针对重点和难点进行了讲解,方便大家理解与学习。
本书可以作为学习数据结构的自学教材,也可以作为案头必备的参考书,值得珍藏。本书很适合初学数据结构的读者阅读,也可作为参加计算机考研学生的辅导书。
在使用本书过程中,可以边看书,边听视频讲解,视频讲解主要针对本书中的难点和重点,每学完一部分内容,可以在电脑上调试本书配套的代码,认真领会算法的思想,并思考为什么要这样实现。
相信在学完本书后,大家会在数据结构和算法方面有很大的收获。预祝大家在学习本书时有一个愉快的旅程。
致谢
我要感谢帮助本书问世的所有人,尤其是机械工业出版社的李华君编辑,他十分看重本书的应用价值,在他的努力下本书才得以顺利出版,对此,我深怀感激。
还要感谢我的导师张蕾教授。她是对我职业生涯最有影响的人之一,她丰富的知识储备及敏锐的洞察力极大地影响了我的学习态度,促使我的学习能力和认识能力有了很大提高,也为本书的编写奠定了良好的知识与技术基础。
耿国华老师在数据结构和算法领域有很高的造诣,耿教授在数据结构与算法领域给了我很大启发。
还要感谢我的家人,在他们的默默付出与鼓励下,我才能顺利写完本书。
最后还要感谢温县教育局电教馆全体同仁的帮助与鼓励,尤其要感谢张全仕馆长对我写作的关心与支持。
由于作者水平有限,书中难免存在一些不足之处,恳请读者批评指正。读者可通过邮箱nwuchenrui@126.com与作者联系,也可通过QQ群(216732263)与作者交流。

   陈 锐

上架指导

计算机\数据结构

封底文字

加宣传封面

作者简介

陈锐 成建设 等编著:暂无简介

图书目录

前言
第一篇 基础知识
第1章 数据结构概述 1
1.1 为什么要学习数据结构 1
1.2 基本概念和术语 2
1.3 数据的逻辑结构与存储结构 4
1.3.1 逻辑结构 4
1.3.2 存储结构 4
1.4 抽象数据类型及其描述 5
1.4.1 什么是抽象数据类型 5
1.4.2 抽象数据类型的描述 6
1.5 算法 8
1.5.1 数据结构与算法的关系 8
1.5.2 什么是算法 8
1.5.3 算法的五大特性 9
1.5.4 算法的描述 9
1.6 算法分析 10
1.6.1 算法设计的4个目标 11
1.6.2 算法效率评价 11
1.6.3 算法的时间复杂度 12
1.6.4 算法的空间复杂度 14
1.7 学好数据结构的秘诀 14
1.8 习题 15
第2章 C语言基础 17
2.1 C语言开发环境 17
2.1.1 Turbo C 2.0开发环境 17
2.1.2 Visual C++ 6.0开发环境 19
2.2 递归与非递归 22
2.2.1 函数的递归调用 22
2.2.2 递归应用举例 23
2.2.3 迭代与递归 26
2.3 指针 27
2.3.1 什么是指针 27
2.3.2 指针变量的间接引用 28
2.3.3 指针与数组 29
2.3.4 指针函数与函数指针 34
2.4 参数传递 40
2.4.1 传值调用 40
2.4.2 传地址调用 42
2.5 结构体与联合体 44
2.5.1 结构体的定义 45
2.5.2 指向结构体的指针 47
2.5.3 用typedef定义数据类型 48
2.5.4 联合体 49
2.6 链表 54
2.6.1 内存的动态分配与释放 54
2.6.2 什么是链表 55
2.6.3 创建链表 55
2.6.4 链表的输出操作 58
2.6.5 链表的插入操作 60
2.6.6 链表的删除操作 64
2.6.7 链表的综合操作 66
2.6.8 链表应用举例:一元多项式的相加 67
2.7 小结 73
2.8 习题 74
第二篇 线性数据结构
第3章 线性表 77
3.1 线性表的定义及抽象数据类型 77
3.1.1 线性表的逻辑结构 77
3.1.2 线性表的抽象数据类型 78
3.2 线性表的顺序表示与实现 79
3.2.1 线性表的顺序存储结构 79
3.2.2 顺序表的基本运算 80
3.2.3 顺序表的实现算法分析 83
3.2.4 顺序表的优缺点 83
3.2.5 顺序表应用举例 84
3.3 线性表的链式表示与实现 89
3.3.1 单链表的存储结构 90
3.3.2 单链表上的基本运算 91
3.3.3 单链表存储结构与顺序存储结构的优缺点 96
3.3.4 单链表应用举例 97
3.4 循环单链表 104
3.4.1 循环链表的链式存储 104
3.4.2 循环单链表应用举例 106
3.5 双向链表 108
3.5.1 双向链表的存储结构 108
3.5.2 双向链表的插入和删除操作 109
3.5.3 双向链表应用举例 111
3.6 静态链表 113
3.6.1 静态链表的存储结构 114
3.6.2 静态链表的基本运算 114
3.6.3 静态链表应用举例 117
3.7 综合案例:一元多项式的表示与相乘 118
3.7.1 一元多项式的表示 118
3.7.2 一元多项式相乘 119
3.8 小结 123
3.9 习题 123
第4章 栈 127
4.1 栈的定义与抽象数据类型 127
4.1.1 什么是栈 127
4.1.2 栈的抽象数据类型 128
4.2 栈的顺序表示与实现 128
4.2.1 栈的顺序存储结构 128
4.2.2 顺序栈的基本运算 129
4.2.3 顺序栈应用举例 131
4.3 栈的链式表示与实现 136
4.3.1 栈的链式存储结构 137
4.3.2 链栈的基本运算 137
4.3.3 链栈应用举例 140
4.4 栈的典型应用 141
4.4.1 括号匹配 141
4.4.2 求算术表达式的值 144
4.4.3 迷宫求解 151
4.5 栈与递归 156
4.5.1 递归 156
4.5.2 消除递归 160
4.6 小结 162
4.7 习题 163
第5章 队列 165
5.1 队列的定义与抽象数据类型 165
5.1.1 什么是队列 165
5.1.2 队列的抽象数据类型 165
5.2 队列的顺序存储及实现 166
5.2.1 顺序队列的表示 166
5.2.2 顺序队列的“假溢出” 167
5.2.3 顺序循环队列的表示 167
5.2.4 顺序循环队列的基本运算 169
5.2.5 顺序循环队列举例 170
5.3 队列的链式存储及实现 172
5.3.1 链式队列的表示 172
5.3.2 链式队列的基本运算 173
5.3.3 链式队列举例 175
5.4 双端队列 179
5.4.1 什么是双端队列 179
5.4.2 双端队列的应用 179
5.5 综合案例:动画模拟停车场管理系统 181
5.6 小结 194
5.7 习题 194
第6章 串 197
6.1 串的定义及抽象数据类型 197
6.1.1 什么是串 197
6.1.2 串的抽象数据类型 198
6.2 串的顺序表示与实现 199
6.2.1 串的顺序存储结构 199
6.2.2 顺序串的基本运算 200
6.2.3 顺序串应用举例 203
6.3 串的堆分配表示与实现 205
6.3.1 堆分配的存储结构 205
6.3.2 堆串的基本运算 205
6.4 串的块链式存储表示与实现 208
6.4.1 串的块链式存储结构 208
6.4.2 块链串的基本运算 209
6.5 串的模式匹配 212
6.5.1 朴素模式匹配算法——Brute-Force 212
6.5.2 KMP算法 214
6.5.3 模式匹配应用举例 219
6.6 小结 223
6.7 习题 224
第7章 数组 226
7.1 数组的定义及抽象数据类型 226
7.1.1 重新认识数组 226
7.1.2 数组的抽象数据类型 227
7.2 数组的顺序表示与实现 227
7.2.1 数组的顺序存储结构 227
7.2.2 数组的基本运算 229
7.2.3 数组应用举例 231
7.3 特殊矩阵的压缩存储 233
7.3.1 对称矩阵的压缩存储 233
7.3.2 三角矩阵的压缩存储 233
7.3.3 对角矩阵的压缩存储 235
7.4 稀疏矩阵的压缩存储 236
7.4.1 什么是稀疏矩阵 236
7.4.2 稀疏矩阵抽象数据类型 236
7.4.3 稀疏矩阵的三元组表示 236
7.4.4 稀疏矩阵的三元组实现 237
7.5 稀疏矩阵应用举例 241
7.5.1 三元组表示的稀疏矩阵相加 241
7.5.2 三元组表示的稀疏矩阵相乘 244
7.6 稀疏矩阵的十字链表表示与实现 249
7.6.1 稀疏矩阵的十字链表表示 249
7.6.2 十字链表的基本运算 250
7.7 小结 252
7.8 习题 252
第8章 广义表 254
8.1 广义表的定义及抽象数据类型 254
8.1.1 什么是广义表 254
8.1.2 广义表的抽象数据类型 255
8.2 广义表的头尾链表表示与实现 255
8.2.1 广义表的头尾链表存储结构 255
8.2.2 广义表的基本运算 256
8.2.3 广义表应用举例(采用头尾链表存储结构) 259
8.3 广义表的扩展线性链表表示与实现 263
8.3.1 广义表的扩展线性链表存储结构 263
8.3.2 广义表的基本运算 264
8.3.3 广义表应用举例(扩展线性链表存储结构) 266
8.4 小结 269
8.5 习题 269
第三篇 非线性数据结构
第9章 树 271
9.1 树的相关概念及抽象数据类型 271
9.1.1 什么是树 271
9.1.2 树的相关概念 272
9.1.3 树的逻辑表示 272
9.1.4 树的抽象数据类型 273
9.1.5 树的存储结构 274
9.2 二叉树的相关概念及抽象数据类型 277
9.2.1 什么是二叉树 277
9.2.2 二叉树的性质 277
9.2.3 二叉树的抽象数据类型 280
9.3 二叉树的存储表示与实现 281
9.3.1 二叉树的顺序存储 281
9.3.2 二叉树的链式存储 282
9.3.3 二叉树的基本运算 282
9.4 遍历二叉树 285
9.4.1 什么是遍历二叉树 285
9.4.2 遍历二叉树 286
9.4.3 非递归遍历二叉树——基于栈的递归消除 288
9.5 遍历二叉树的应用 290
9.5.1 按层次输出二叉树 290
9.5.2 二叉树的计数 291
9.5.3 求叶子结点的最大最小枝长 293
9.5.4 判断两棵二叉树是否相似 294
9.5.5 交换二叉树的左右子树 294
9.5.6 求根结点到r结点之间的路径 294
9.6 线索二叉树 296
9.6.1 什么是线索化二叉树 296
9.6.2 线索二叉树 297
9.6.3 遍历线索二叉树 298
9.6.4 线索二叉树应用举例 300
9.7 树、森林与二叉树 304
9.7.1 树转换为二叉树 304
9.7.2 森林转换为二叉树 305
9.7.3 二叉树转换为树和森林 306
9.7.4 树和森林的遍历 306
9.7.5 树与二叉树应用举例 307
9.8 综合案例:哈夫曼树 320
9.8.1 什么是哈夫曼树 320
9.8.2 哈夫曼编码 322
9.8.3 哈夫曼编码算法的实现 322
9.9 小结 326
9.10 习题 327
第10章 图 330
10.1 图的定义与相关概念 330
10.1.1 什么是图 330
10.1.2 图的相关概念 331
10.1.3 图的抽象数据类型 333
10.2 图的存储结构 334
10.2.1 邻接矩阵(数组表示法) 334
10.2.2 邻接表 338
10.2.3 十字链表 343
10.2.4 邻接多重链表 344
10.3 图的遍历 345
10.3.1 图的深度优先搜索 345
10.3.2 图的广度优先搜索 348
10.4 图的连通性问题 349
10.4.1 无向图的连通分量与最小生成树 349
10.4.2 最小生成树 351
10.5 有向无环图 359
10.5.1 AOV网与拓扑排序 360
10.5.2 AOE网与关键路径 362
10.6 最短路径 367
10.6.1 从某个顶点到其余各顶点的最短路径 367
10.6.2 每一对顶点之间的最短路径 372
10.6.3 最短路径应用举例 374
10.7 图的应用举例 375
10.8 小结 383
10.9 习题 383
第四篇 查找与排序
第11章 查找 387
11.1 基本概念 387
11.2 静态查找 388
11.2.1 顺序表的查找 388
11.2.2 有序顺序表的查找 389
11.2.3 索引顺序表的查找 391
11.2.4 静态查找应用举例 393
11.3 动态查找 395
11.3.1 二叉排序树 395
11.3.2 平衡二叉树 402
11.4 B-树与B+树 408
11.4.1 B-树 408
11.4.2 B+树 415
11.5 哈希表 415
11.5.1 什么是哈希表 416
11.5.2 哈希函数的构造方法 416
11.5.3 处理冲突的方法 417
11.5.4 哈希表应用举例 419
11.6 小结 422
11.7 习题 423
第12章 内排序 425
12.1 基本概念 425
12.2 插入排序 426
12.2.1 直接插入排序 426
12.2.2 折半插入排序 428
12.2.3 希尔排序 430
12.2.4 插入排序应用举例 431
12.3 交换排序 434
12.3.1 冒泡排序 434
12.3.2 快速排序 437
12.3.3 交换排序应用举例 439
12.4 选择排序 442
12.4.1 简单选择排序 443
12.4.2 堆排序 444
12.4.3 选择排序应用举例 448
12.5 归并排序 451
12.5.1 2路归并排序算法 452
12.5.2 归并排序应用举例 453
12.6 基数排序 455
12.6.1 基数排序算法 455
12.6.2 基数排序应用举例 458
12.7 小结 462
12.8 习题 462
第13章 外排序 464
13.1 外存的存取特性 464
13.2 磁盘排序 465
13.2.1 归并排序的基本方法 466
13.2.2 多路归并排序 467
13.3 磁带排序 468
13.3.1 2路归并排序 468
13.3.2 多路非平衡归并排序 469
13.4 小结 470
参考文献 471

教学资源推荐
作者: (美)David A. Patterson;John L. Hennessy 著
作者: James D.Foley,Andries van Dam,Steven K.Feiner,John F.Hughes,Richard L. Phillips
作者: 孙世新 卢光辉 张艳 顾小丰 戴波 等
作者: 许畅,冯洋,郑艳伟,陈鄞等
参考读物推荐
作者: 华诚科技 编著
作者: 杨剑 张璞 陈火红
作者: [美]帕拉格·K. 拉拉(Parag K. Lala) 著
作者: 戴艳 等编著