内容简介
第1章JavaScript的编程环境和模型
1.1 JavaScript环境
1.2 JavaScript编程实践
1.2.1声明和初始化变量
1.2.2 JavaScript中的算术运算和数学库函数
1.2.3判断结构
1.2.4循环结构
1.2.5函数
1.2.6变量作用域
1.2.7递归
1.3对象和面向对象编程
1.4小结
第2章 数组
2.1 JavaScript中对数组的定义
2.2使用数组
2.2.1创建数组
2.2.2读写数组
2.2.3由字符串生成数组
2.2.4对数组的整体性操作
2.3存取函数
2.3.1查找元素
2.3.2数组的字符串表示
2.3.3由已有数组创建新数组
2.4可变函数
2.4.1为数组添加元素
2.4.2从数组中删除元素
2.4.3从数组中间位置添加和删除元素
2.4.4为数组排序
2.5迭代器方法
2.5.1不生成新数组的迭代器方法
2.5.2生成新数组的迭代器方法
2.6二维和多维数组
2.6.1创建二维数组
2.6.2处理二维数组的元素
2.6.3参差不齐的数组
2.7对象数组
2.8对象中的数组
2.9练习
第3章 列表
3.1列表的抽象数据类型定义
3.2实现列表类
3.2.1 append:给列表添加元素
3.2.2 remove:从列表中删除元素
3.2.3 find:在列表中查找某一元素
3.2.4 length:列表中有多少个元素
3.2.5 toString:显示列表中的元素
3.2.6 insert:向列表中插入一个元素
3.2.7 clear:清空列表中所有的元素
3.2.8 contains:判断给定值是否在列表中
3.2.9遍历列表
3.3使用迭代器访问列表
3.4一个基于列表的应用
3.4.1读取文本文件
3.4.2使用列表管理影碟租赁
3.5练习
第4章栈
4.1对栈的操作
4.2栈的实现
4.3使用Stack类
4.3.1数制间的相互转换
4.3.2回文
4.3.3递归演示
4.4练习
第5章 队列
5.1对队列的操作
5.2一个用数组实现的队列
5.3使用队列:方块舞的舞伴分配问题
5.4使用队列对数据进行排序
5.5优先队列
5.6练习
第6章 链表
6.1数组的缺点
6.2定义链表
6.3设计一个基于对象的链表
6.3.1 Node类
6.3.2 LinkedList类
6.3.3插入新节点
6.3.4从链表中删除一个节点
6.4双向链表
6.5循环链表
6.6链表的其他方法
6.7练习
第7章 字典
7.1 Dictionary类
7.2 Dictionary类的辅助方法
7.3为Dictionary类添加排序功能
7.4练习
第8章 散列
8.1散列概览
8.2 HashTable类
8.2.1选择一个散列函数
8.2.2一个更好的散列函数
8.2.3散列化整型键
8.2.4 对散列表排序、从散列表中取值
8.3碰撞处理
8.3.1开链法
8.3.2线性探测法
8.4练习
第9章 集合
9.1集合的定义、操作和属性
9.1.1集合的定义
9.1.2对集合的操作
9.2 Set类的实现
9.3更多集合操作
9.4练习
第10章 二叉树和二叉查找树
10.1树的定义
10.2二叉树和二叉查找树
10.2.1实现二叉查找树
10.2.2遍历二叉查找树
10.3在二叉查找树上进行查找
10.3.1查找最小值和最大值
10.3.2查找给定值
10.4从二叉查找树上删除节点
10.5计数
10.6练习
第11章 图和图算法
11.1图的定义
11.2用图对现实中的系统建模
11.3图类
11.3.1表示顶点
11.3.2表示边
11.3.3构建图
11.4搜索图
11.4.1深度优先搜索
11.4.2广度优先搜索
11.5查找最短路径
11.5.1广度优先搜索对应的最短路径
11.5.2确定路径
11.6拓扑排序
11.6.1拓扑排序算法
11.6.2实现拓扑排序算法
11.7练习
第12章 排序算法
12.1数组测试平台
12.2基本排序算法
12.2.1冒泡排序
12.2.2选择排序
12.2.3插入排序
12.2.4基本排序算法的计时比较
12.3高级排序算法
12.3.1希尔排序
12.3.2归并排序
12.3.3快速排序
12.4练习
第13章 检索算法
13.1顺序查找
13.1.1查找最小值和最大值
13.1.2使用自组织数据
13.2二分查找算法
13.3查找文本数据
13.4练习
第14章 高级算法
14.1动态规划
14.1.1动态规划实例:计算斐波那契数列
14.1.2寻找最长公共子串
14.1.3背包问题:递归解决方案
14.1.4背包问题:动态规划方案
14.2贪心算法
14.2.1第一个贪心算法案例:找零问题
14.2.2背包问题的贪心算法解决方案
14.3练习
封面介绍