第1章 绪论1
1.1 数据结构在程序设计中的作用1
1.2 本书讨论的主要内容3
1.3 数据结构的基本概念5
1.3.1 数据结构5
1.3.2 抽象数据类型7
1.4 算法及算法分析9
1.4.1 算法及其描述方法9
1.4.2 算法分析12
思想火花--好算法是反复努力和重新修正的结果16
习题117
思考题119
第2章 线性表21
2.1 线性表的逻辑结构21
2.1.1 线性表的定义21
2.1.2 线性表的抽象数据类型定义22
2.2 线性表的顺序存储结构及实现24
2.2.1 线性表的顺序存储结构--顺序表24
2.2.2 顺序表的实现25
2.3 线性表的链接存储结构及实现30
2.3.1 单链表30
2.3.2 循环链表40
2.3.3 双链表40
2.4 顺序表和链表的比较42
2.4.1 时间性能比较42
2.4.2 空间性能比较43 数据结构(C++版)(第2版)目录 2.5 线性表的其他存储方法43
2.5.1 静态链表43
2.5.2 间接寻址45
2.6 应用举例45
2.6.1 顺序表的应用举例--大整数求和45
2.6.2 单链表的应用举例--一元多项式求和47
思想火花--好程序要能识别和处理各种输入50
习题250
思考题253
第3章 栈和队列55
3.1 栈55
3.1.1 栈的逻辑结构55
3.1.2 栈的顺序存储结构及实现57
3.1.3 栈的链接存储结构及实现61
3.1.4 顺序栈和链栈的比较63
3.2 队列64
3.2.1 队列的逻辑结构64
3.2.2 队列的顺序存储结构及实现65
3.2.3 队列的链接存储结构及实现68
3.2.4 循环队列和链队列的比较71
3.3 应用举例71
3.3.1 栈的应用举例--表达式求值71
3.3.2 队列的应用举例--火车车厢重排73
思想火花--直觉可能是错误的75
习题375
思考题377
第4章 字符串和多维数组79
4.1 字符串79
4.1.1 字符串的定义79
4.1.2 字符串的存储结构80
4.1.3 模式匹配81
4.2 多维数组85
4.2.1 数组的定义85
4.2.2 数组的存储结构与寻址86
4.3 矩阵的压缩存储87
4.3.1 对称矩阵的压缩存储87
4.3.2 三角矩阵的压缩存储88
4.3.3 对角矩阵的压缩存储89
4.3.4 稀疏矩阵的压缩存储90
4.4 应用举例92
4.4.1 字符串的应用举例--凯撒密码92
4.4.2 数组的应用举例--幻方93
思想火花--用常识性的思维去思考问题94
习题494
思考题496
第5章 树和二叉树99
5.1 树的逻辑结构99
5.1.1 树的定义和基本术语99
5.1.2 树的抽象数据类型定义101
5.1.3 树的遍历操作102
5.2 树的存储结构103
5.2.1 双亲表示法103
5.2.2 孩子表示法104
5.2.3 双亲孩子表示法106
5.2.4 孩子兄弟表示法107
5.3 二叉树的逻辑结构107
5.3.1 二叉树的定义108
5.3.2 二叉树的基本性质109
5.3.3 二叉树的抽象数据类型定义112
5.3.4 二叉树的遍历操作113
5.4 二叉树的存储结构及实现114
5.4.1 顺序存储结构114
5.4.2 二叉链表115
5.4.3 三叉链表120
5.4.4 线索链表120
5.5 二叉树遍历的非递归算法125
5.5.1 前序遍历非递归算法125
5.5.2 中序遍历非递归算法126
5.5.3 后序遍历非递归算法127
5.6 树、森林与二叉树的转换128
5.7 应用举例131
5.7.1 二叉树的应用举例--哈夫曼树及哈夫曼编码131
5.7.2 树的应用举例--八枚硬币问题136
思想火花--调试程序与魔术表演137
习题5138
思考题5140
第6章 图143
6.1 图的逻辑结构143
6.1.1 图的定义和基本术语143
6.1.2 图的抽象数据类型定义147
6.1.3 图的遍历操作148
6.2 图的存储结构及实现151
6.2.1 邻接矩阵152
6.2.2 邻接表155
6.2.3 十字链表159
6.2.4 邻接多重表159
6.2.5 邻接矩阵和邻接表的比较160
6.3 最小生成树161
6.3.1 MST性质161
6.3.2 Prim算法162
6.3.3 Kruskal算法165
6.4 最短路径168
6.4.1 Dijkstra算法169
6.4.2 Floyd算法171
6.5 有向无环图及其应用173
6.5.1 AOV网与拓扑排序173
6.5.2 AOE网与关键路径176
6.6 应用举例179
6.6.1 图的应用举例1--七桥问题179
6.6.2 图的应用举例2--七巧板涂色180
思想火花--数据模型在问题求解中的作用181
习题6181
思考题6185
第7章 查找技术187
7.1 概述187
7.1.1 查找的基本概念187
7.1.2 查找算法的性能188
7.2 线性表的查找技术189
7.2.1 顺序查找189
7.2.2 折半查找191
7.3 树表的查找技术195
7.3.1 二叉排序树195
7.3.2 平衡二叉树201
7.4 散列表的查找技术206
7.4.1 概述206
7.4.2 散列函数的设计207
7.4.3 处理冲突的方法210
7.4.4 散列查找的性能分析213
7.4.5 开散列表与闭散列表的比较214
思想火花--把注意力集中于主要因素,不要纠缠于噪声214
习题7215
思考题7218
第8章 排序技术219
8.1 概述219
8.1.1 排序的基本概念219
8.1.2 排序算法的性能220
8.2 插入排序221
8.2.1 直接插入排序221
8.2.2 希尔排序223
8.3 交换排序225
8.3.1 起泡排序225
8.3.2 快速排序228
8.4 选择排序231
8.4.1 简单选择排序231
8.4.2 堆排序233
8.5 归并排序238
8.5.1 二路归并排序的非递归实现238
8.5.2 二路归并排序的递归实现241
8.6 分配排序242
8.6.1 桶式排序242
8.6.2 基数排序244
8.7 各种排序方法的比较247
思想火花--学会“盒子以外的思考”249
习题8250
思考题8253
第9章 索引技术255
9.1 索引的基本概念255
9.2 线性索引技术256
9.2.1 稠密索引256
9.2.2 分块索引257
9.2.3 多重表258
9.2.4 倒排表258
9.3 树形索引259
9.3.1 2-3树259
9.3.2 B-树262
9.3.3 B+树266
思想火花--随处可见的索引267
习题9268
附录A 预备知识271
A.1 数学术语271
A.2 级数求和271
A.3 集合272
A.4 关系273
附录B C++语言基本语法275
B.1 程序结构275
B.2 数据类型276
B.3 控制语句278
B.4 输入与输出279
B.5 动态存储分配280
B.6 函数281
B.7 类与对象284
B.8 模板287
B.9 异常处理288
附录C 词汇索引289
参考文献294
JavaEE基础教程目录 2.3.7 基本数据类型的转换26
2.3.8 Java中的引用类型30
2.4 运算符与表达式31
2.4.1 算术运算32
2.4.2 关系运算32
2.4.3 逻辑运算33
2.4.4 位运算34
2.4.5 赋值运算36
2.4.6 条件运算36
2.4.7 特殊操作符 37
2.4.8 运算符的优先级和结合性汇总38
2.4.9 表达式和语句39
2.5 数组40
2.5.1 数组的概念40
2.5.2 数组的创建与初始化40
2.5.3 多维数组44
2.5.4 数组的复制48
2.5.5 操作数组的工具类49
2.5.6 数组的应用举例51
习题253
第3章 控制结构57
3.1 分支结构57
3.1.1 if语句57
3.1.2 switch语句59
3.2 循环语句60
3.2.1 for循环语句61
3.2.2 for-each循环语句 64
3.2.3 while与do-while语句65
3.3 break与continue语句67
习题369
第4章 类与对象的基本概念73
4.1 类与对象的概念73
4.1.1 类的声明73
4.1.2 方法重载77
4.1.3 构造方法79
4.1.4 对象81
4.1.5 父类、子类和继承87
4.1.6 super关键字93
4.1.7 上转型对象97
4.1.8 多态性99
4.2 类的访问权限与包的概念101
4.2.1 类的访问控制101
4.2.2 类成员的访问控制103
4.2.3 类的组织106
习题4113
第5章 类的高级特性119
5.1 static关键字119
5.2 this关键字123
5.3 静态导入126
5.4 final关键字128
5.5 抽象类与接口129
5.5.1 抽象类129
5.5.2 接口的定义131
5.5.3 接口的实现132
5.5.4 接口的应用133
5.5.5 接口回调136
习题5137
第6章 常用类库139
6.1 字符串处理类139
6.1.1 String类的构造函数139
6.1.2 String类的常用方法140
6.2 数据封装类142
6.3 Scanner类144
6.4 日期和时间类145
6.4.1 Date类145
6.4.2 Calendar类146
6.5 数据类型的转换147
6.5.1 数值型数据与字符串之间的转换147
6.5.2 日期型数据与字符串之间的转换148
6.6 集合类150
6.6.1 Set接口与HashSet类150
6.6.2 List接口与ArrayList类151
6.6.3 Map接口与HashMap类152
6.7 泛型154
6.7.1 泛型的概念154
6.7.2 泛型类和泛型方法155
6.7.3 List<E>接口和ArrayList<E>类156
6.7.4 Map<K,V>接口和HashMap<K,V>类157
习题6158
第7章 异常161
7.1 异常的处理机制161
7.2 异常的处理161
7.2.1 Java内置异常162
7.2.2 try和catch语句163
7.2.3 throw语句165
7.2.4 throws语句166
7.2.5 finally语句167
7.3 自定义异常167
习题7168
第8章 输入输出流171
8.1 获取文件和目录的属性171
8.2 Java中的I/O流173
8.2.1 I/O流的概念173
8.2.2 InputStream流173
8.2.3 OutputStream流173
8.3 字节流174
8.3.1 FileInputStream流174
8.3.2 FileOutputStream流175
8.4 字符流176
8.4.1 Reader流176
8.4.2 Writer流177
8.4.3 FileReader流177
8.4.4 FileWriter流178
习题8179
第9章 多线程181
9.1 线程概述181
9.1.1 进程的概念181
9.1.2 线程的概念181
9.2 线程的创建182
9.2.1 继承Thread类182
9.2.2 实现Runnable接口183
9.3 线程的调度184
9.3.1 线程的生命周期184
9.3.2 线程的优先级185
9.3.3 线程的同步185
9.3.4 wait-notify机制188
习题9191
第10章 数据库编程193
10.1 MySQL数据库的安装与配置193
10.1.1 MySQL数据库的安装193
10.1.2 在MyEclipse中连接和使用MySQL数据库196
10.2 JDBC技术简介198
10.3 JDBC访问数据库199
10.3.1 DriverManager类199
10.3.2 Connectin接口200
10.3.3 Statement接口201
10.3.4 PreparedStatement接口203
10.3.5 ResultSet接口205
10.4 数据库的操作示例206
10.4.1 更新数据206
10.4.2 查询数据209
习题10212
下篇 Java Web开发
第11章 Java Web概述与Web发布217
11.1 Java Web概述217
11.2 HTTP协议219
11.2.1 GET方法的请求和响应格式219
11.2.2 POST方法的请求格式222
11.3 Web服务器Tomcat223
11.3.1 Servlet容器介绍223
11.3.2 Tomcat简介224
11.3.3 Tomcat的安装配置224
11.3.4 测试Tomcat225
11.3.5 在MyEclipse中启动自定义的Tomcat225
11.4 在MyEclipse 中开发Web226
11.4.1 Web工程的创建226
11.4.2 Web工程的发布227
习题11229
第12章 JSP技术231
12.1 JSP简介231
12.2 JSP标准语法232
12.2.1 一个简单的JSP程序232
12.2.2 JSP注释与声明233
12.2.3 JSP表达式和JSP程序段234
12.2.4 JSP与HTML的混合使用235
12.3 JSP编译指令 236
12.3.1 include指令236
12.3.2 page指令237
12.3.3 taglib指令238
12.4 JSP动作239
12.4.1 forward动作239
12.4.2 include动作240
12.4.3 useBean动作240
12.5 JSP的隐含对象242
12.5.1 输出对象out242
12.5.2 请求对象request243
12.5.3 响应对象response245
12.5.4 会话对象session246
12.5.5 Web服务器对象application248
12.6 编程示例: 网上书店249
习题12252
第13章 JavaBean255
13.1 JavaBean的定义255
13.2 两种JavaBean的封装类255
13.2.1 封装数据的JavaBean255
13.2.2 封装业务的JavaBean257
13.3 在JSP中使用JavaBean259
13.4 JSP设计模式260
13.4.1 ModelI体系结构260
13.4.2 ModelII体系结构261
习题13262
第14章 Servlet基础知识265
14.1 Servlet的定义265
14.2 Servlet的生命周期268
14.2.1 加载和实例化268
14.2.2 初始化268
14.2.3 服务268
14.2.4 销毁268
14.3 Servlet体系结构和层次结构269
14.3.1 Servlet体系结构269
14.3.2 Servlet API层次结构269
14.4 Servlet与JSP之间的关系271
14.5 主要Servlet API介绍271
14.5.1 HttpServlet类272
14.5.2 ServletRequest接口272
14.5.3 HttpServletRequest接口273
14.5.4 ServletResponse接口275
14.5.5 HttpServletResponse接口275
14.5.6 ServletContext接口277
14.6 在MyEclipse中利用向导创建Servlet279
14.7 编程示例: 网上书店280
14.7.1 修改图书操作类代码280
14.7.2 图书列表页面listBook.jsp和其他页面283
14.7.3 编写Servlet287
习题14289
第15章 Servlet的会话跟踪技术291
15.1 session与会话291
15.2 Servlet实现会话跟踪 292
15.3 编程示例: 网上书店293
15.3.1 顾客浏览图书293
15.3.2 显示图书详细信息295
15.3.3 将图书添加到购物车并显示购物车信息296
15.3.4 添加订单信息并结账299
习题15301第16章 过滤器303
16.1 Servlet过滤器简介303
16.2 Servlet过滤器体系结构304
16.3 Servlet过滤器的实现304
16.3.1 编写实现类304
16.3.2 过滤器的配置306
16.4 中文乱码问题307
16.4.1 JSP页面中文乱码问题307
16.4.2 表单提交乱码问题307
习题16309
第17章 EL与JSTL311
17.1 EL表达式311
17.1.1 EL表达式的基础知识311
17.1.2 EL隐式对象312
17.1.3 EL表达式的使用示例313
17.2 JSTL简介319
17.3 JSTL核心标签库319
17.3.1 工程中添加对JSTL的支持319
17.3.2 通用标签320
17.3.3 条件标签321
17.3.4 迭代标签323
17.4 编程示例: 网上书店325
17.4.1 用EL表达式重写图书显示页面325
17.4.2 用EL表达式重写显示图书详细信息的页面326
习题17327
第18章 JSP自定义标签329
18.1 JSP自定义标签简介329
18.2 开发自定义JSP标签330
18.2.1 创建标签处理类330
18.2.2 创建标签库描述文件TLD332
18.2.3 JSP中使用自定义标签332
18.3 编程示例: 网上书店333
18.3.1 分页标签处理类333
18.3.2 分页标签库描述文件336
18.3.3 使用分页标签336
习题18338