目录


第1章概述001
1.1编程环境001
1.1.1Java编程环境001
1.1.2C++编程环境003
1.2数据结构008
1.2.1基本概念008
1.2.2逻辑结构009
1.2.3存储结构010
1.3算法012
1.3.1算法的定义012
1.3.2算法特性012
1.3.3算法描述013
1.3.4算法分析014
1.4抽象数据类型015
1.5本章小结016
1.6基础知识检测016
1.7上机实验017
1.7.1实验1: 熟悉编程环境017
1.7.2实验2: 简单算法设计与分析018
1.7.3实验拓展019
第2章线性表结构020
2.1线性表基本概念020
2.2线性表的顺序存储021
2.2.1顺序存储的概念021
2.2.2顺序存储结构的实现022
2.2.3性能分析024
2.2.4顺序表查找优化025
2.3线性表的链式存储026
2.3.1链式存储的概念026
2.3.2单向链表027
2.3.3双向链表031
2.3.4顺序表与链表的比较032
2.4栈032
2.4.1栈的基本概念032
2.4.2栈的基本操作032
2.4.3栈的抽象数据类型033
2.4.4顺序栈033
2.4.5链式栈034
2.5队列036
数据结构(从概念到Java实现)

目录

2.6哈希表040
2.6.1哈希表的基本概念040
2.6.2常用的哈希函数041
2.6.3冲突处理方法043
2.7本章小结044
2.8基础知识检测045
2.9上机实验045
2.9.1实验1: 顺序表的基本操作046
2.9.2实验2: 链表的基本操作049
2.9.3实验3: 栈的基本操作051
2.9.4实验4: 哈希表的应用053
2.9.5实验拓展054
第3章树结构055
3.1树基本概念055
3.1.1树的定义056
3.1.2树的基本术语056
3.1.3树的基本操作057
3.1.4树的抽象数据类型057
3.2二叉树的基本概念058
3.2.1二叉树的定义058
3.2.2二叉树的性质059
3.2.3二叉树与树的区别059
3.3二叉树的存储结构060
3.3.1二叉树的顺序存储结构060
3.3.2二叉树的链式存储结构061
3.4二叉树的建立与遍历065
3.4.1基于深度优先遍历策略的二叉树遍历065
3.4.2基于广度优先遍历策略的二叉树遍历067
3.4.3二叉树的建立方法068
3.5二叉排序树071
3.5.1二叉排序树的定义071
3.5.2基于二叉排序树的查找过程072
3.5.3二叉排序树中插入结点072
3.5.4二叉排序树中删除结点074
3.6哈夫曼树的应用076
3.6.1哈夫曼树的基本概念076
3.6.2哈夫曼树的构造方法077
3.6.3哈夫曼编码的构造方法078
3.7树的存储与遍历079
3.7.1树的存储结构079
3.7.2树的遍历083
3.7.3树、森林与二叉树之间的转换083
3.8基础知识检测085
3.9上机实验086
3.9.1实验1: 二叉树的建立与遍历086
3.9.2实验2: 二叉排序树的查找算法实现088
3.9.3实验3: 哈夫曼树的应用090
3.9.4实验拓展091
第4章图结构092
4.1图的基本概念092
4.1.1相关术语093
4.1.2图的基本操作095
4.1.3图的抽象数据类型095
4.2图的存储结构095
4.2.1邻接矩阵095
4.2.2邻接表101
4.2.3邻接矩阵与邻接表的对比107
4.3图的遍历107
4.4图的应用111
4.4.1最小生成树111
4.4.2拓扑排序114
4.4.3最短路径115
4.4.4关键路径118
4.5基础知识检测120
4.6上机实验122
4.6.1实验1: 图的存储122
4.6.2实验2: 图的遍历124
4.6.3实验3: 图的应用126
4.6.4实验拓展126
第5章排序算法127
5.1排序的基本概念127
5.2插入排序130
5.2.1直接插入排序130
5.2.2二分插入排序131
5.2.3希尔排序132
5.3交换排序134
5.3.1冒泡排序134
5.3.2快速排序135
5.4选择排序138
5.4.1直接选择排序138
5.4.2堆排序139
5.5合并排序142
5.5.1递归合并排序142
5.5.2非递归合并排序143
5.6基础知识检测144
5.7上机实验145
5.7.1实验1: 几种排序算法的实现145
5.7.2实验2: 排序算法时间性能比较147
5.7.3实验拓展149
第6章串与数组150
6.1串150
6.2数组157
6.3特殊矩阵的压缩存储158
6.4本章小结159
6.5基础知识检测159
6.6上机实验160
6.6.1实验1: 串的基本操作160
6.6.2实验2: 稀疏矩阵基本操作167
6.6.3实验拓展172
第7章课程设计概述173
7.1课程设计教学大纲173
7.2课程设计撰写规范175
第8章线性表的应用179
8.1基于约瑟夫环的数字游戏数据结构设计179
8.1.1任务分析180
8.1.2数据结构选择181
8.1.3算法设计与实现181
8.1.4算法运行界面示例183
8.2图书管理系统的设计184
8.2.1任务分析184
8.2.2数据结构选择185
8.2.3算法设计与实现187
8.2.4算法运行界面示例193
第9章栈和队列的应用196
9.1迷宫问题196
9.1.1任务分析196
9.1.2数据结构选择197
9.1.3算法设计与实现198
9.1.4算法运行界面示例201
9.2停车场管理方案的数据结构设计202
9.2.1任务分析203
9.2.2数据结构选择203
9.2.3算法设计与实现205
9.2.4算法运行界面示例207
9.3排队就餐管理方案设计208
9.3.1任务分析209
9.3.2数据结构选择209
9.3.3算法设计与实现210
9.3.4算法运行界面示例212
第10章树的应用213
10.1哈夫曼编/译码器213
10.1.1任务分析214
10.1.2数据结构选择214
10.1.3算法设计与实现215
10.1.4算法运行界面示例217
10.2英文文本比对器219
10.2.1任务分析219
10.2.2数据结构选择220
10.2.3算法设计与实现220
10.2.4算法运行界面示例221
第11章图的应用223
11.1校园地图设计及其应用223
11.1.1任务分析223
11.1.2数据结构选择224
11.1.3算法设计与实现224
11.1.4算法运行界面示例226
11.2校园超市选址方案设计228
11.2.1任务分析229
11.2.2数据结构选择229
11.2.3算法设计与实现230
11.2.4算法运行界面示例232
参考文献234