算法与数据结构(第2版)(高等院校信息技术规划教材)
- 定价:¥29.00
- 校园优惠价:¥26.10 (90折) (马上了解)
- 评分:




(已有0条评价)
- 促销活动:
- 此商品暂时缺货(可留下联系方式,到货将第一时间通知您)
-
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由客服人员为您协调调货!
>> 查看详细说明
信息提示
关闭
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由我们的客服人员为您协调调货!
- 团购订单标准如下:
- 单品满30册可选择团购服务。
- 提交团购订单后,服务人员会主动和您联系,并根据您的会员等级、购买数量、金额、时间、配送要求等情况和您协商,以促成最终的成交。
- 有关团体购书的任何问题请随时联系:(010)63970506
内容简介
书籍 计算机书籍
本书是针对应用型本科教学特点和需求编写的课程教材之一,它覆盖了《中国计算机科学与技术学科教程2002》中关于核心课程“算法与数据结构”的所有知识单元和课程提纲,系统介绍了各种常用数据结构的有关知识和各种基本的检索排序算法。每章配有足量的例题、习题和上机实验题,并有由本社出版与之配套使用的《算法与数据结构习题精解和实验指导》和电子教案,便于教师组织教学和学生自学。
全书以知识单元为基本构件,便于分解和重组,可以满足不同院校计算机科学与技术学科各专业的教学需求,也可作为从事计算机科学与技术工作的科技人员的参考用书。
目录
第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.2.3 N-S图表示4
1.2.4 伪代码表示4
1.2.5 程序语言表示5
1.3 算法的设计与评价6
1.3.1 评价算法的标准6
1.3.2 算法的环路复杂度7
1.3.3 算法的时空效率8
1.3.4 常见的算法设计方法11
1.4 算法与程序14
1.4.1 程序的基本概念14
1.4.2 问题求解与实现策略14
1.4.3 程序调试与查错策略16
1.4.4 程序设计方法概述17
习题121
第2章 常用数据结构23
2.1 数据类型与数据结构23
2.1.1 数据、数据元素与数据类型23
2.1.2 数据结构的基本概念25
2.1.3 抽象数据类型27◆算法与数据结构(第2版)目 录 2.2 数组29
2.2.1 数组及其运算29
2.2.2 数组的顺序存储结构30
2.2.3 特殊矩阵的压缩存储31
2.3 串34
2.3.1 串的基本概念34
2.3.2 串的定长顺序存储及运算实现35
2.3.3 模式匹配38
2.3.4 串的堆式动态存储及运算实现43
2.3.5 汉字串46
习题249
上机实验题51
第3章 简单数据结构52
3.1 顺序表52
3.1.1 线性表的基本概念52
3.1.2 线性表的顺序存储结构--顺序表53
3.1.3 顺序表上的基本运算54
3.2 链表58
3.2.1 线性表的链式存储结构--链表58
3.2.2 单链表上的基本运算60
3.2.3 循环链表和双向链表65
3.2.4 线性表应用举例--一元多项式相加问题67
3.3 栈69
3.3.1 栈的概念及运算69
3.3.2 顺序栈及运算实现69
3.3.3 链栈及运算实现72
3.3.4 栈的应用举例--递归的实现74
3.4 队列76
3.4.1 队列的概念及其运算76
3.4.2 顺序队列及运算实现77
3.4.3 链队列及运算实现80
3.4.4 队列的应用举例--I/O缓冲区管理及其他82
3.5 广义表84
3.5.1 广义表的概念84
3.5.2 广义表的存储结构及运算实现85
3.5.3 广义表的应用--m元多项式的表示87
习题389
上机实验题92
第4章 树与二叉树93
4.1 树的基本概念93
4.1.1 树的定义及表示93
4.1.2 树的常用术语及运算94
4.2 二叉树96
4.2.1 二叉树的概念96
4.2.2 二叉树的性质97
4.2.3 二叉树的存储结构98
4.2.4 二叉树的简单运算实现101
4.3 二叉树的遍历102
4.3.1 遍历二叉树的递归算法102
4.3.2 遍历二叉树的非递归算法104
4.3.3 遍历序列与二叉树的复原108
4.3.4 基于遍历的几种二叉树运算的实现和应用举例110
4.4 线索二叉树111
4.4.1 线索二叉树的概念111
4.4.2 线索二叉树的构造算法113
4.4.3 线索二叉树上的运算实现114
4.5 树和森林115
4.5.1 树和森林的存储结构116
4.5.2 树和森林与二叉树之间的转换117
4.5.3 树和森林的遍历119
4.5.4 树的应用举例--判定树120
4.6 哈夫曼树121
4.6.1 哈夫曼树的概念及其构造算法121
4.6.2 哈夫曼树的应用--哈夫曼编码124
习题4125
上机实验题128
第5章 图与网129
5.1 图与网的基本概念129
5.1.1 图与网的定义129
5.1.2 图的相关术语130
5.2 图与网的存储结构132
5.2.1 邻接矩阵132
5.2.2 邻接表与逆邻接表133
5.2.3 邻接多重表135
5.3 图的遍历136
5.3.1 深度优先搜索遍历136
5.3.2 广度优先搜索遍历138
5.3.3 图的遍历应用举例--图的连通性与生成树139
5.4 无向连通网的最小生成树140
5.4.1 最小生成树的概念140
5.4.2 Prim算法141
5.4.3 Kruskal算法143
5.5 有向网的最短路径144
5.5.1 单源最短路径144
5.5.2 所有顶点对之间的最短路径146
5.6 有向无环图及其应用148
5.6.1 有向无环图的概念148
5.6.2 AOV网与拓扑排序150
5.6.3 AOE网与关键路径154
习题5159
上机实验题161
第6章 数据结构的程序实现162
6.1 基本的实现策略162
6.1.1 简单数据结构的程序实现162
6.1.2 构造型数据结构的程序实现163
6.1.3 数据结构的链式实现163
6.1.4 数据结构的数组实现163
6.2 动态结构的静态实现163
6.2.1 静态链表164
6.2.2 二叉树的静态二叉链表表示法164
6.2.3 树和森林的双亲表示法165
6.2.4 哈夫曼算法的静态实现166
6.3 大批量数据的组织策略170
6.3.1 文件的组织170
6.3.2 数据库技术177
6.4 数据结构在问题建模中的应用179
6.4.1 Josephus问题180
6.4.2 教务管理与二分图182
6.4.3 学籍管理系统中的数据组织185
习题6190
上机实验题191
第7章 检索及基本算法192
7.1 检索的概念192
7.2 线性表的检索194
7.2.1 顺序检索194
7.2.2 二分法检索195
7.2.3 黄金分割点检索198
7.2.4 精算点检索200
7.2.5 分块检索202
7.3 树表的检索204
7.3.1 二叉检索树204
7.3.2 二叉检索树的平衡性调整211
7.3.3 B树和B+树214
7.4 哈希检索217
7.4.1 哈希检索与哈希表217
7.4.2 哈希函数的构造方法218
7.4.3 地址冲突的消解策略220
7.4.4 哈希表的检索算法及性能分析222
习题7224
上机实验题226
第8章 排序及基本算法228
8.1 排序的基本概念228
8.2 插入排序229
8.2.1 直接插入排序230
8.2.2 希尔排序231
8.2.3 其他插入排序简介234
8.3 交换排序237
8.3.1 冒泡排序237
8.3.2 快速排序238
8.4 选择排序241
8.4.1 直接选择排序241
8.4.2 树型选择排序242
8.4.3 堆排序243
8.5 归并排序247
8.5.1 归并相邻两个有序序列248
8.5.2 二路归并排序的递归算法249
8.5.3 二路归并排序的非递归算法249
8.6 基数排序250
8.6.1 多关键字排序250
8.6.2 链式基数排序251
8.7 各种内部排序方法的比较和选择254
8.8 外部排序简介256
习题8258
上机实验题260
参考文献261
第1篇 基础知识篇
第1章 网站概述31.1 网站与网页的基本概念3
1.1.1 网页3
1.1.2 网页的分类3
1.1.3 网站4
1.1.4 网站的分类5
1.2 网站的开发流程5
1.2.1 确定网站主题6
1.2.2 网站整体规划6
1.2.3 收集整理网站素材9
1.2.4 开发与测试网站9
1.2.5 域名空间的申请与备案11
1.2.6 发布网站12
1.2.7 更新和维护网站12
1.2.8 宣传与推广网站13
1.3 撰写网站策划书13
1.3.1 网站策划书撰写要点14
1.3.2 实例: 撰写“北京奥运吉祥物--福娃”
网站策划书16
1.4 网站开发相关软件介绍20
1.4.1 网页编辑软件21
1.4.2 图像处理软件22
1.4.3 动画制作软件22
1.4.4 网站发布软件22
1.5 本章小结23 1.6 习题23
第2章 网站开发环境的搭建25
2.1 Dreamweaver CS3简介25
2.2 Dreamweaver CS3的工作界面26
2.2.1 启动Dreamweaver CS326
2.2.2 工作区集成窗口26
2.3 站点的基本操作30
2.3.1 新建站点31
2.3.2 管理站点34
2.4 网页文档的基本操作35
2.4.1 创建网页35
2.4.2 编辑网页37
2.4.3 预览网页37
2.4.4 打开和关闭网页文档38
2.5 IIS的安装与配置38
2.5.1 IIS的简介38
2.5.2 IIS的安装39
2.5.3 IIS的简单配置41
2.6 实例:“北京奥运吉祥物--福娃”站点的建立与配置45
2.7 本章小结48
2.8 习题49
第3章 超文本标记语言HTML50
3.1 HTML概述50
3.1.1 HTML的基本概念50
3.1.2 HTML的基本结构51
3.1.3 HTML的基本语法规则53
3.2 文字与段落标记54
3.2.1 标题字标记54
3.2.2 文字格式标记55
3.2.3 字型标记56
3.2.4 段落标记和强制换行标记57
3.2.5 水平线标记58
3.2.6 其他标记59
3.3 列表标记62
3.3.1 无序列表标记62
3.3.2 有序列表标记63
3.3.3 自定义列表标记64
3.4 表格标记65
3.5 多媒体标记69
3.5.1 图像标记69
3.5.2 音频标记70
3.5.3 视频标记71
3.6 超链接标记72
3.7 表单标记75
3.8 框架标记80
3.9 本章小结83
3.10 习题83
第2篇 静态设计篇
第4章 “北京奥运吉祥物--福娃”网站的静态设计864.1 使用表格布局网站主页86
4.1.1 布局主页头部87
4.1.2 布局主页主体89
4.1.3 布局主页底部93
4.2 设计主页94
4.2.1 设置网页属性94
4.2.2 设置表格属性96
4.2.3 插入文本和图像97
4.2.4 插入Flash动画100
4.2.5 插入JavaScript网页特效代码102
4.3 设计其他相关网页107
4.3.1 内容显示页面107
4.3.2 标题列表页面108
4.3.3 图片显示页面108
4.3.4 留言板页面108
4.4 创建超链接110
4.4.1 超链接相关知识110
4.4.2 超链接的创建111
4.5 本章小结115
4.6 习题115
第5章 使用CSS美化“北京奥运吉祥物--福娃”网站116
5.1 层叠样式表(CSS)基础116
5.1.1 层叠样式表(CSS)简介116
5.1.2 CSS的特点116
5.2 网页中使用CSS的方法117
5.2.1 行内样式表117
5.2.2 内联样式表117
5.2.3 外联样式表118
5.2.4 导入样式表118
5.3 选择器119
5.3.1 选择器的语法格式119
5.3.2 标签选择器119
5.3.3 类选择器121
5.3.4 ID选择器123
5.4 创建和管理CSS125
5.4.1 认识CSS面板125
5.4.2 新建CSS126
5.4.3 CSS样式表属性126
5.4.4 管理CSS132
5.5 样式表属性133
5.5.1 CSS的文字属性133
5.5.2 CSS的文本属性135
5.5.3 CSS的背景属性135
5.6 CSS+DIV进行网页布局137
5.6.1 与标记138
5.6.2 盒子模型139
5.6.3 元素的定位141
5.6.4 布局流程151
5.6.5 常用的布局类型153
5.7 使用CSS美化“北京奥运吉祥物--福娃”网站161
5.7.1 网站概述161
5.7.2 布局分析161
5.7.3 各模块布局设计163
5.8 本章小结175
5.9 习题175
第6章 使用Photoshop美化“北京奥运吉祥物--福娃”网站176
6.1 Photoshop CS3基础176
6.1.1 Photoshop CS3的工作界面176
6.1.2 Photoshop CS3的基本操作178
6.2 设计网页前的准备工作185
6.2.1 确定页面大小185
6.2.2 确定网页主色调185
6.2.3 设计网页的结构185
6.3 设计美化网页186
6.3.1 Logo区设计186
6.3.2 导航区设计191
6.3.3 图片新闻区设计193
6.3.4 福娃动态区设计195
6.3.5 Banner和公告栏区的设计197
6.3.6 福娃简介区设计198
6.3.7 福娃揭秘区设计199
6.3.8 精彩图片区设计199
6.3.9 名人说福娃区设计199
6.3.10 投票调查区设计200
6.3.11 版权区设计200
6.4 效果图切片输出201
6.4.1 图像格式介绍201
6.4.2 创建与编辑切片203
6.4.3 输出切片205
6.5 本章小结207
6.6 习题207
第3篇 动态设计篇
第4章 动态网站技术概述2097.1 静态网站与动态网站209
7.2 动态网站的工作模式212
7.3 动态网站常用技术213
7.3.1 ASP技术213
7.3.2 ASP.NET技术214
7.3.3 PHP技术214
7.3.4 JSP技术215
7.4 动态Web服务器215
7.4.1 IIS搭建Web服务器216
7.4.2 Apache搭建Web服务器216
7.5 本章小结223
7.6 习题224
第8章 ASP基础知识225
8.1 ASP的运行与开发环境225
8.2 ASP的基本语法规则226
8.3 VBScript编程基础228
8.3.1 VBScript的数据类型228
8.3.2 VBScript的常量228
8.3.3 VBScript的变量229
8.3.4 VBScript的运算符与表达式230
8.3.5 VBScript的控制语句231
8.3.6 VBScript的子程序与函数236
8.4 ASP的内置对象237
8.4.1 Request对象237
8.4.2 Response对象241
8.4.3 Application对象242
8.4.4 Session对象244
8.4.5 Server对象245
8.4.6 ObjectContext对象246
8.4.7 Global.asa文件246
8.5 ASP的常用组件248
8.5.1 AdRotator组件249
8.5.2 ContentRotator组件251
8.5.3 BrowserCapabilities组件252
8.5.4 ContentLinking组件252
8.5.5 其他组件简介252
8.6 本章小结253
8.7 习题254
第9章 数据库访问技术255
9.1 数据库基础知识255
9.2 使用Access创建数据库256
9.2.1 规划数据库257
9.2.2 创建数据库257
9.3 数据库的连接261
9.3.1 ODBC简介262
9.3.2 使用DSN连接数据库262
9.3.3 使用自定义连接字符串连接数据库266
9.3.4 使用Connection对象连接数据库267
9.4 数据库的访问267
9.4.1 Connection对象267
9.4.2 Command对象269
9.4.3 Recordset对象269
9.4.4 数据库访问实例272
9.5 本章小结282
9.6 习题282
第10章 “北京奥运吉祥物--福娃”网站的动态设计284
10.1 投票调查子系统285
10.1.1 功能说明285
10.1.2 系统规划285
10.1.3 系统设计286
10.2 留言板子系统289
10.2.1 功能说明289
10.2.2 系统规划289
10.2.3 系统设计291
10.3 内容管理子系统293
10.3.1 功能说明293
10.3.2 系统规划293
10.3.3 系统设计296
10.4 本章小结300
10.5 习题301
第4篇 提 高 篇
第11章 网页特效设计30311.1 JavaScript概述303
11.1.1 JavaScript的特点303
11.1.2 JavaScript的功能306
11.2 在网页中使用JavaScript的方法307
11.3 JavaScript的基本语法308
11.3.1 常量308
11.3.2 变量309
11.3.3 运算符310
11.3.4 表达式311
11.3.5 程序控制流语句311
11.3.6 函数313
11.4 JavaScript的对象和事件313
11.4.1 JavaScript的对象313
11.4.2 JavaScript的事件314
11.5 JavaScript应用实例316
11.5.1 动态显示日期和时间316
11.5.2 状态栏跑马灯信息317
11.5.3 计时器319
11.5.4 获取浏览器版本号320
11.5.5 滚动显示公告信息321
11.6 本章小结322
11.7 习题322
第12章 Web新技术展望324
12.1 XML技术324
12.1.1 XML技术简介324
12.1.2 XML文档的结构326
12.1.3 XML语法基础327
12.1.4 XML元素和属性的定义330
12.1.5 XML的使用前景331
12.2 Web 2.0与AJAX技术331
12.2.1 Web 2.0技术简介331
12.2.2 Web 2.0技术特性332
12.2.3 AJAX技术简介332
12.2.4 AJAX技术特性333
12.3 HTML 5技术334
12.3.1 HTML 5简介335
12.3.2 HTML 5的新特性335
12.3.3 HTML 5应用实例335
12.4 本章小结341
12.5 习题342
附录A 习题参考答案343
A.1 第1章343
A.2 第2章343
A.3 第3章344
A.4 第4章347
A.5 第5章347
A.6 第6章347
A.7 第7章348
A.8 第8章350
A.9 第9章352
A.10 第10章352
A.11 第11章352
A.12 第12章358
参考文献360
前言
“算法与数据结构”是计算机科学与技术学科中的一门十分重要的专业基础课程和专业核心课程。中国计算机学会教育专业委员会和全国高等学校计算机教育研究会在《计算机学科教学计划1993》中,把“算法与数据结构”课程列为计算机科学与技术学科公共要求的九个主科目之一。中国计算机科学与技术学科教程2002研究组在《中国计算机科学与技术学科教程2002》中,把“算法与数据结构”课程列为计算机科学与技术学科16个专业核心课程之一。计算机科学与技术学科的各个领域中,都要求科技工作者具备良好的算法与数据结构基础。
在前导课程“高级语言程序设计”中,我们已经学会了简单程序设计的基本理论和基本的方法与技术。“算法与数据结构”课程讨论程序数据的结构、组织和管理技术以及在此基础上的算法设计与分析技术,即学习讨论较复杂程序设计的问题。“算法与数据结构”课程的教学要求是,学会分析研究计算机加工的数据对象的特性,以便在实际应用中选择适当的数据结构、存储结构和相应的算法,初步掌握算法的时间性能与空间性能的分析技巧,得到复杂程序设计的初步训练。本书在内容的组织上旨在阐明常用数据结构的内在逻辑关系,讨论各种结构的机内存储表示方法,通过实例说明各种结构在运算操作时的动态特性,并结合典型应用问题给出了算法设计与分析的示例。这样,不仅为后续课程如“操作系统”、“编译原理”、“数据库原理”、“软件工程”、“人工智能”、“计算机图形学”、“计算机辅助设计”、“多媒体技术”等提供必要的知识准备,更重要的是可以进一步提高读者从事软件分析、设计、编程和数据组织的能力和水平。
自从严蔚敏教授1981年出版国内第一本《数据结构》教材以来,全国已有该课程的各类教材达几十种版本之多,对我国计算机科学与技术学科的教学发挥了重要的作用。然而,真正适合应用型本科教学使用的好教材并不多见。作者在认真总结这30年来从事“数据结构”及其相关课程的教学经验和体会的基础上,针对应用型◆算法与数据结构(第2版)前 言本科教学的特点和需要,结合现阶段大学生的素质特点与学习现状,按照《中国计算机科学与技术学科教程2002》中设定的“算法与数据结构”课程教学大纲要求编写了这本教材。书中强调算法与数据结构之间密不可分的联系,体现程序设计方法中抽象、枚举、归纳三个原则的运用,反复再现算法的复杂性、效率、折中、重用等重要概念,并增加了“数据结构的程序实现”一章内容,有利于读者在较深层次上掌握好“算法与数据结构”这一核心课程。
在内容的选取上体现了突出应用的原则--针对应用型本科课程教与学的特点,在实例列举上力求做到典型和恰当,并在各章都附有相应的练习题和上机实验题;以实例介绍各种数据结构的应用,为后续课程的衔接--应用各种数据结构奠定了良好的基础。
在内容的组织上遵循循序渐进的原则--由程序与算法导入,从数据类型、数组和串开讲数据结构,与前导课程“高级语言程序设计” (C语言程序设计)内容前后贯通,无缝隙衔接浑然一体;内容由浅入深、按常用数据结构、简单数据结构、树与二叉树、图与网、检索和排序的次序安排主要教学内容。
在内容的叙述上符合通俗易懂的原则--在算法的描述上力求结构清晰、描述正确、易读易理解,并对每一个算法都做了大量的注释。在文字叙述上力求做到由浅入深和深入浅出,用语大众化,增强可读性。
围绕基本内容,除了增加“数据结构的程序实现”一章内容外,还介绍了一些同类其他书籍中没有或很少讨论的内容,如由层次序列和中序序列恢复二叉树、黄金点检索、精算点检索、共享栈插入排序等。
全书内容共8章。第1章介绍算法与程序的基本概念、表示、设计和分析方法,是在前导课程“高级语言程序设计”基础上的进一步引申和总结;第2章由前导课程中的数据类型概念引出数据结构的有关基本概念,并介绍读者已在前导课程中熟知的数组结构和串结构的进一步内容;第3章深入浅出地介绍一些简单的线性结构(如顺序表、链表、栈、队列、广义表等结构)的定义、基本算法和典型应用;第4章和第5章介绍非线性结构中的树、二叉树、图与网的有关内容;第6章介绍各类数据结构在程序设计语言中的实现策略和大批量数据的组织策略,并结合实际问题讨论了数据结构在问题建模中的应用方法;第7章和第8章介绍了在实际应用中广泛使用的检索和排序的基本算法,并进行了必要的算法分析。全书以知识单元为基本构件,各知识单元内容相对独立,具有可分解性、可重组性,便于不同院校根据各自的需要组织教学。
全书侧重应用性,力求教学内容与应用实际紧密结合;强调实践性,建议读者多动手,通过实际编程实现各种算法,并在深入分析的基础上改进算法或提出新的算法,强调多做习题和上机实验题的重要性。《中国计算机科学与技术学科教程2002》中建议本课程的讲授课时为72学时,实验课时为32学时;各校可根据自己的实际情况作适当调整。
本书由宁正元教授和赖贤伟博士共同编著,其中第1~8章由宁正元教授执笔,赖贤伟博士针对本书制作了电子教案。王秀丽教授、陈国龙教授、康宝生教授、林大辉副教授、易金聪副教授、黄思先副教授、刘雄恩副教授、黄建实验师、林敏讲师等在本书的成稿前期工作或精品课程建设中做了部分工作或提供了有益帮助,高等教育出版社计算机分社社长张龙和清华大学出版社计算机分社高级策划编辑袁勤勇对本书的出版自始至终都给予了极大的支持和鼓励,作者在此一并表示最诚挚的感谢。
鉴于时间仓促和作者水平所限,书中难免还有错、谬、疏、漏之处,敬请同行专家和广大读者不吝赐教,我们将不胜感激。
作 者2011年12月