搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
零基础学数据结构
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111291367
  • 作      者:
    陈锐等编著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2010
收藏
编辑推荐
  内容全面:《零基础学数据结构》涵盖了数据结构中几乎所有知识点
  图文并茂:用通俗易懂的文字描述,并绘制了多幅示意图帮助读者理解
  实例丰富:全书提供了70余个典型实例帮助读者理解数据结构与算法思想
  C语言描述:书中的算法采用C语言描述,适合众多读者学习
  视频教学:配有19.5小时多媒体视频进行讲解,学习效果好
  励志照亮人 编程改变命运
  《零基础学数据结构》涵盖内容
  数据结构基本概念、抽象数据类型及描述
  数据结构的逻辑结构与存储结构、算法特性与描述、算法分析
  递归与非递归、指针、参数传递
  结构体与联合体、动态内存分配与释放、链表
  线性表的概念及运算、线性表的顺序表示与实现
  单链表、循环单链表、双向链表、静态链表
  栈的表示与实现、栈的顺序表示与实现
  栈的链式表示与实现、栈与递归的实现
  队列的定义、顺序存储及实现、链式存储及实现、双端队列
  串的顺序表示与实现、串的堆分配表示与实现
  串的链式存储表示与实现、串的模式匹配
  数组的顺序表示与实现、特殊矩阵的压缩存储
  稀疏矩阵的压缩存储、稀疏矩阵的十字链表表示与实现
  广义表的头尾链表表示与实现、广义表的扩展线性链表表示与实现
  二叉树的存储表示与实现、遍历、线索化、哈夫曼树图的定义、存储结构、遍历、连通性、有向无环图
  静态查找、动态查找、B-树与B+树、散列表
  内排序:插入排序、选择排序、交换排序、归并排序、基数排序
  外排序:磁盘排序、磁带排序
  光盘内容
  书中涉及的程序源代吗
  《零基础学数据结构》多媒体教学视频
  《零基础学数据结构》教学PPT
  赠送的编程电子图书
  丛书特点
  配有多媒体教学进行讲解,学习起来直观
  门槛低,没有任何基础的读者都能轻松掌握
  丛书作者均为有多年编程经验的一线程序员
  对每本书都提供了大量典型实例帮助读者理解
  提供典型安全帮助读者提高开发水平
  书中的源代码都 提供了详细的注释,阅读起来无障碍
  光盘提供书中的源代吗、教学视频及超值学习资料
展开
内容介绍
  《零基础学数据结构》是计算机专业的专业基础课和核心课程。《零基础学数据结构》内容全面,所有算法都是用C语言描述,能够直接运行,在每一章的所有知识点都给出了算法的具体使用。《零基础学数据结构》内容包括数据结构概述、C语言程序设计基础、线性表、栈、队列、串、数组、广义表、树和二叉树、图、查找、内排序和外排序。为了便于读者学习,在讲解每一个知识点时,都结合图和具体实例进行分析,在每个知识点的最后都给出算法的具体应用,每一个例子都比较典型且知识点覆盖完整。
  《零基础学数据结构》可作为大中专院校的计算机相关专业数据结构的教材,也可作为计算机软件开发、考验和软件等级考试相关人员的参考书。
展开
精彩书摘
  1.2.1抽象数据类型的定义
  抽象数据类型是对具有某种逻辑关系的数据类型进行描述,并在该类型上进行的一组操作。抽象数据类型描述的是一组逻辑上的特性,与在计算机内部表示无关。计算机中的整数数据类型是一个抽象数据类型,不同的处理器可能实现方法不同,但其逻辑特性相同,即加、减、乘、除等运算是一致的。
  抽象数据类型不仅包括在计算机中已经定义了的数据类型,如整型、浮点型等,还包括用户自己定义的数据类型,如结构体类型、类等。
  一个抽象数据类型定义了一个数据对象、数据对象各数据元素之间的关系及对数据元素的操作。
  抽象数据类型通常是指用户定义的解决应用问题的数据模型,包括数据的定义和操作。例如,c++的类就是一个抽象数据类型,它包括用户类型的定义和在用户类型上的一组操作。
  抽象数据类型体现了程序设计中的问题分解、抽象和信息隐藏特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。这与日常生活中盖房子类似。
  我们可以把盖房子分成几个小任务,一方面需要工程技术人员提供房子的设计图纸,另一方面需要建筑工人根据图纸打地基、盖房子,房子盖好以后还需要装修工人装修,这与抽象数据类型中的问题分解类似。工程技术人员不需要打地基和盖房子的具体过程,装修工人不需要知道怎么画图纸和怎样盖房子,这就相当于抽象数据类型中的信息隐藏。
  1.2.2抽象数据类型的描述
  抽象数据类型可以用数据集合和基本操作集合来描述。其中,数据集合包括对数据对象和数据对象中元素之间关系的描述,基本操作集合是对数据对象的运算的描述。数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:
  基本操作名(参数表):初始条件和操作结果描述。
  例如,一个队列的抽象数据类型描述如下。
  1.数据集合
  队列的数据集合为{a1a2,…,an},每个元素的类型均为DataType。其中,a1是队头元素,an是队尾元素。入队和出队都是按照a1,,a2,…,an的先后次序进入队列和退出队列。
  2.基本操作集合
  队列的基本操作主要有以下六项。
  (1)InitQueue(&Q):初始化操作,建立一个空队列Q。这就像日常生活中,火车站售票处新增加了一个售票窗口,这样就可以新增一队用来排队买票。
  (2)QueueEmpty(Q):若Q为空队列,返回1,否则返回0。这就像日常生活中,火车站售票窗口前是否还有人排队买票。
  (3)EnterQueue(&Q,x):插入元素x到队列Q的队尾。这就像日常生活中,新来买票的人要在队列的最后一样。
  (4)DeleteQueue(&Q,&e):删除Q的队首元素,并用e返回其值。这就像买过票的排在队头的人离开队列。
展开
目录
第一篇 基 础 篇
第1章 数据结构概述 1
1.1 数据结构的基本概念 1
1.2 抽象数据类型及其描述 2
1.2.1 抽象数据类型的定义 3
1.2.2 抽象数据类型的描述 3
1.3 数据结构的逻辑结构与物理结构 4
1.3.1 逻辑结构 4
1.3.2 物理结构 5
1.4 算法的特性与算法的描述 5
1.4.1 算法的定义 5
1.4.2 算法的特性 6
1.4.3 算法的描述 6
1.5 算法分析 7
1.5.1 算法设计的要求 7
1.5.2 算法效率评价 8
1.5.3 算法时间复杂度 9
1.5.4 算法空间复杂度 11
1.6 小结 11

第2章 C语言基础 12
2.1 开发环境介绍 12
2.1.1 Turbo C 2.0开发环境介绍 12
2.1.2 Visual C++ 6.0开发环境介绍 14
2.2 递归与非递归 17
2.2.1 函数的递归调用 17
2.2.2 递归应用举例 18
2.2.3 一般递归转化为非递归 20
2.3 指针 20
2.3.1 指针变量 20
2.3.2 指针变量的引用 22
2.3.3 指针与数组 22
2.3.4 函数指针与指针函数 27
2.4 参数传递 32
2.4.1 传值调用 33
2.4.2 传地址调用 34
2.5 结构体与联合体 36
2.5.1 结构体的定义 37
2.5.2 指向结构体的指针 38
2.5.3 联合体及应用 39
2.6 动态内存分配与释放 40
2.6.1 内存动态分配与释放 40
2.6.2 链表 40
2.7 小结 46
2.8 习题 46

第二篇 线性数据结构
第3章 线性表 47
3.1 线性表的概念及运算 47
3.1.1 线性表的逻辑结构 47
3.1.2 线性表的抽象数据类型 48
3.2 线性表的顺序表示与实现 49
3.2.1 线性表的顺序存储结构 49
3.2.2 顺序表的基本运算 50
3.2.3 顺序表的实现算法分析 53
3.3 顺序表的应用举例 53
3.4 线性表的链式表示与实现 58
3.4.1 单链表的存储结构 58
3.4.2 单链表的基本运算 60
3.5 单链表应用举例 65
3.6 循环单链表 70
3.6.1 循环单链表的链式存储 71
3.6.2 循环单链表的应用 72
3.7 双向链表 76
3.7.1 双向链表的存储结构 76
3.7.2 双向链表的插入操作和删除操作 77
3.8 双向链表的应用举例 79
3.9 静态链表 82
3.9.1 静态链表的存储结构 82
3.9.2 静态链表的实现 83
3.9.3 静态链表的应用 85
3.10 各种线性表的操作 86
3.11 一元多项式的表示与相乘 94
3.11.1 一元多项式的表示 94
3.11.2 一元多项式相乘 95
3.12 小结 99
3.13 习题 100

第4章 栈 101
4.1 栈的表示与实现 101
4.1.1 栈的定义 101
4.1.2 栈的抽象数据类型 102
4.2 栈的顺序表示与实现 102
4.2.1 栈的顺序存储结构 102
4.2.2 顺序栈的基本运算 103
4.2.3 共享栈的问题 105
4.3 栈的应用举例一 107
4.4 栈的链式表示与实现 111
4.4.1 栈的存储结构 111
4.4.2 栈的基本运算 112
4.4.3 链栈的应用 114
4.5 栈的应用举例二 115
4.5.1 数制转换 116
4.5.2 括号配对 117
4.5.3 行编辑程序 119
4.6 栈与递归的实现 121
4.6.1 递归 121
4.6.2 消除递归 124
4.7 栈的应用举例三 129
4.7.1 表达式的转换与计算 130
4.7.2 表达式的运算 132
4.8 小结 136
4.9 习题 137

第5章 队列 138
5.1 队列的定义及抽象数据类型 138
5.1.1 队列的定义 138
5.1.2 队列的抽象数据类型 138
5.2 队列的顺序存储及实现 139
5.2.1 顺序队列的表示 139
5.2.2 顺序队列的“假溢出” 142
5.2.3 顺序循环队列的表示 143
5.2.4 顺序循环队列的实现 144
5.2.5 顺序循环队列实例 145
5.3 队列的链式存储及实现 148
5.3.1 链式队列的表示 148
5.3.2 链式队列的实现 150
5.3.3 链式队列实例 152
5.4 双端队列 156
5.4.1 双端队列的定义 156
5.4.2 双端队列的应用 156
5.5 队列在杨辉三角中的应用 159
5.5.1 杨辉三角 159
5.5.2 杨辉三角的队列构造 159
5.5.3 杨辉三角队列的实现 160
5.6 小结 164
5.7 习题 164

第6章 串 165
6.1 串的定义及抽象数据类型 165
6.1.1 串的定义 165
6.1.2 串的抽象数据类型 165
6.2 串的顺序表示与实现 167
6.2.1 串的顺序存储结构 167
6.2.2 串的基本运算 168
6.3 串的应用举例 173
6.4 串的堆分配表示与实现 174
6.4.1 堆分配的存储结构 175
6.4.2 堆串的基本运算 175
6.5 堆串的应用举例 181
6.6 串的链式存储表示与实现 183
6.6.1 串的链式存储结构 183
6.6.2 链串的基本运算 184
6.7 链串的应用举例 189
6.8 串的模式匹配 191
6.8.1 经典的模式匹配算法─Brute-Force 191
6.8.2 KMP算法 193
6.8.3 模式匹配应用举例 198
6.9 小结 202
6.10 习题 202

第7章 数组 203
7.1 数组的定义及抽象数据类型 203
7.1.1 数组的定义 203
7.1.2 数组的抽象数据类型 204
7.2 数组的顺序表示与实现 204
7.2.1 数组的顺序存储结构 204
7.2.2 数组的基本运算 206
7.2.3 数组的应用举例 208
7.3 特殊矩阵的压缩存储 209
7.3.1 对称矩阵的压缩存储 210
7.3.2 三角矩阵的压缩存储 210
7.3.3 对角矩阵的压缩存储 211
7.4 稀疏矩阵的压缩存储 212
7.4.1 稀疏矩阵的定义 212
7.4.2 稀疏矩阵的抽象数据类型 212
7.4.3 稀疏矩阵的三元组表示 213
7.4.4 稀疏矩阵的三元组实现 213
7.5 稀疏矩阵的应用举例 219
7.5.1 稀疏矩阵相乘三元组表示 219
7.5.2 稀疏矩阵相乘三元组实现 221
7.6 稀疏矩阵的十字链表表示与实现 224
7.6.1 稀疏矩阵的十字链表表示 224
7.6.2 稀疏矩阵的十字链表实现 225
7.7 稀疏矩阵的十字链表实现应用举例 228
7.8 小结 233
7.9 习题 234

第8章 广义表 235
8.1 广义表的定义及抽象数据类型 235
8.1.1 广义表的定义 235
8.1.2 广义表的抽象数据类型 236
8.2 广义表的头尾链表表示与实现 236
8.2.1 广义表的头尾链表存储结构 236
8.2.2 广义表的基本运算 237
8.2.3 采用头尾链表存储结构的广义表应用举例 240
8.3 广义表的扩展线性链表表示与实现 243
8.3.1 广义表的扩展线性链表存储 243
8.3.2 广义表的基本运算 244
8.3.3 采用扩展线性链表存储结构的广义表应用举例 247
8.4 小结 249
8.5 习题 250

第三篇 非线性数据结构
第9章 树 251
9.1 树的定义及抽象数据类型 251
9.1.1 树的定义 251
9.1.2 树的逻辑表示 252
9.1.3 树的抽象数据类型 253
9.2 二叉树 254
9.2.1 二叉树的定义 254
9.2.2 二叉树的性质 255
9.2.3 二叉树的抽象数据类型 257
9.3 二叉树的存储表示与实现 258
9.3.1 二叉树的顺序存储 258
9.3.2 二叉树的链式存储 258
9.3.3 二叉树的基本运算 259
9.4 二叉树的遍历 263
9.4.1 二叉树遍历的定义 263
9.4.2 二叉树的先序遍历 263
9.4.3 二叉树的中序遍历 265
9.4.4 二叉树的后序遍历 267
9.5 二叉树遍历的应用举例 269
9.5.1 二叉树的创建 269
9.5.2 二叉树的输出 273
9.5.3 二叉树的计数 276
9.6 二叉树的线索化 279
9.6.1 二叉树线索化的定义.. 279
9.6.2 二叉树的线索化 280
9.6.3 线索二叉树的遍历 282
9.6.4 线索二叉树的应用举例 284
9.7 树、森林与二叉树 287
9.7.1 树的存储结构 287
9.7.2 树转换为二叉树 290
9.7.3 森林转换为二叉树 291
9.7.4 二叉树转换为树和森林 292
9.7.5 树和森林的遍历 292
9.8 哈夫曼树 293
9.8.1 哈夫曼树的定义 293
9.8.2 哈夫曼编码 294
9.8.3 哈夫曼编码算法的实现 295
9.9 树与二叉树的应用举例 301
9.9.1 相似二叉树 301
9.9.2 由先序和中序、中序和后序确定二叉树 302
9.9.3 树的孩子兄弟链表应用举例 308
9.10 小结 311
9.11 习题 312

第10章 图 313
10.1 图的定义与相关概念 313
10.1.1 图的定义 313
10.1.2 图的相关概念 314
10.1.3 图的抽象数据类型 316
10.2 图的存储结构 317
10.2.1 邻接矩阵表示法 317
10.2.2 邻接表表示法 318
10.2.3 十字链表表示法 320
10.2.4 邻接多重链表表示法 321
10.3 图的应用举例 322
10.3.1 采用邻接矩阵创建图 322
10.3.2 采用邻接表创建图 325
10.4 图的遍历 328
10.4.1 图的深度优先遍历 328
10.4.2 图的广度优先遍历 331
10.4.3 图的遍历应用举例 333
10.5 图的连通性问题 335
10.5.1 无向图的连通分量与生成树 335
10.5.2 最小生成树 337
10.6 有向无环图 342
10.6.1 AOV网与拓扑排序 342
10.6.2 AOE网与关键路径 345
10.6.3 关键路径应用举例 349
10.7 最短路径 354
10.7.1 从某个顶点到其余各顶点的最短路径 354
10.7.2 每一对顶点之间的最短路径 359
10.8 图的应用举例 363
10.9 小结 367
10.10 习题 368

第四篇 查找和排序
第11章 查找 369
11.1 查找的基本概念 369
11.2 静态查找 370
11.2.1 顺序表的查找 370
11.2.2 有序顺序表的查找 371
11.2.3 索引顺序表的查找 373
11.2.4 静态查找应用举例 374
11.3 动态查找 377
11.3.1 二叉排序树 377
11.3.2 平衡二叉树 384
11.4 B_树与B+树 392
11.4.1 B_树 392
11.4.2 B+树 399
11.5 散列表 400
11.5.1 散列表的定义 400
11.5.2 散列函数的构造方法 401
11.5.3 处理冲突的方法 402
11.5.4 散列表应用举例 403
11.6 小结 407
11.7 习题 408

第12章 内排序 409
12.1 排序的基本概念 409
12.2 插入排序 410
12.2.1 直接插入排序 410
12.2.2 折半插入排序 411
12.2.3 希尔排序 412
12.2.4 插入排序应用举例 413
12.3 选择排序 415
12.3.1 简单选择排序 415
12.3.2 堆排序 417
12.3.3 选择排序应用举例 421
12.4 交换排序 423
12.4.1 冒泡排序 423
12.4.2 快速排序 424
12.4.3 交换排序应用举例 427
12.5 归并排序 431
12.5.1 归并排序算法 431
12.5.2 归并排序应用举例 432
12.6 基数排序 434
12.6.1 基数排序算法 434
12.6.2 基数排序应用举例 437
12.7 各种排序算法的比较 441
12.8 排序算法应用举例 442
12.9 小结 445
12.10 习题 446

第13章 外排序 447
13.1 外存的存取特性 447
13.2 磁盘排序 448
13.2.1 归并排序的基本方法 448
13.2.2 多路归并排序 449
13.3 磁带排序 451
13.3.1 2路归并排序 451
13.3.2 多路非平衡归并排序 452
13.4 小结 453
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证