图书目录

目录

第1章绪论

1.1数据结构的基本概念与学习方法 

1.1.1数据结构的研究对象

1.1.2数据结构的基本概念和基本术语

1.2算法与数据结构

1.2.1算法的概念

1.2.2描述算法的方法

1.2.3算法分析

1.3学习算法与数据结构的意义和方法

1.4C语言的数据类型及其算法描述

1.4.1C语言的基本数据类型概述

1.4.2C语言的数组和结构体数据类型

1.4.3C语言的指针类型概述

1.4.4C语言的函数

1.4.5用C语言验证算法的方法

1.5从C语言到C++语言

1.5.1C++语言的类和抽象数据类型

1.5.2C++语言验证算法的方法

1.5.3C++语言与C语言程序的区别

1.5.4C++语言的重要特性

习题1

上机练习1

第2章线性表

2.1线性表的逻辑结构

2.1.1线性表的定义

2.1.2线性表的运算

2.2线性表的顺序存储结构——顺序表

2.2.1顺序表

2.2.2顺序存储结构的优缺点

2.2.3顺序表上的基本运算

2.3线性表的链式存储结构——链表

2.3.1单链表

2.3.2循环链表和双向链表

2.4线性表的应用示例

2.5C++中的线性表

2.5.1C++中线性表抽象数据类型

2.5.2C++中线性表的顺序存储

2.5.3C++中线性表的链式存储

习题2

上机练习2

第3章栈和队列

3.1栈

3.1.1栈的基本概念

3.1.2栈的顺序存储结构

3.1.3栈的链式存储结构

3.2栈的应用实例

3.2.1表达式求值

3.2.2栈与函数调用

3.2.3栈在回溯法中的应用

3.3队列

3.3.1队列的基本概念

3.3.2队列的顺序存储结构

3.3.3队列的链式存储结构

3.4队列的应用实例

3.4.1舞伴问题

3.4.2打印队列的模拟管理

3.5递归

3.5.1递归的定义及递归模型

3.5.2递归的实现

3.5.3递归设计

3.5.4递归到非递归的转换

3.6C++中的栈和队列

3.6.1C++中的栈

3.6.2C++中的队列

习题3

上机练习3

第4章数组和字符串

4.1数组

4.1.1数组的定义与操作

4.1.2数组的顺序存储结构

4.1.3矩阵的压缩存储方法

4.2字符串

4.2.1字符串的定义与操作

4.2.2字符串的存储结构

4.2.3字符串基本操作的实现

4.2.4字符串的应用举例

4.3C++中的数组和字符串

4.3.1C++中的数组

4.3.2C++中的字符串

习题4

上机练习4

第5章树

5.1树的概念与操作

5.1.1树的概念

5.1.2树的基本操作

5.2二叉树

5.2.1二叉树的概念

5.2.2二叉树的性质

5.2.3二叉树的存储结构及其实现

5.3二叉树的遍历

5.3.1递归的遍历算法

5.3.2二叉树遍历操作应用举例

5.4线索二叉树

5.4.1线索二叉树的定义

5.4.2线索二叉树的常用运算

5.5一般树的表示和遍历

5.5.1一般树的表示

5.5.2二叉树与树、森林之间的转换

5.5.3一般树的遍历

5.6哈夫曼树及其应用

5.6.1哈夫曼树

5.6.2哈夫曼树的应用

5.7C++中的树

5.7.1C++中的二叉树结点类

5.7.2C++中的二叉树类

5.7.3C++中二叉树的非递归遍历

习题5

上机练习5

第6章图

6.1图的概念与操作

6.1.1图的定义

6.1.2图的基本术语

6.2图的存储结构

6.2.1邻接矩阵

6.2.2邻接表

6.2.3十字链表

6.2.4边集数组

6.3图的遍历

6.3.1深度优先搜索

6.3.2广度优先搜索

6.4图的连通性

6.4.1无向图的连通分量

6.4.2生成树和最小代价生成树

6.5有向无环图及应用

6.5.1拓扑排序

6.5.2关键路径

6.6最短路径及应用

6.6.1单源最短路径

6.6.2每对顶点之间的最短路径

6.7C++中的图

6.7.1C++中的图类

6.7.2图的邻接表的C++程序

6.7.3图的遍历的C++程序

6.7.4图的最小生成树的C++程序

习题6

上机练习6

第7章查找

7.1基本概念与术语

7.2静态查找表

7.2.1静态查找表结构

7.2.2顺序查找

7.2.3有序表的折半查找

7.2.4有序表的插值查找和斐波那契查找

7.2.5分块查找

7.3动态查找表

7.3.1二叉排序树

7.3.2平衡二叉树

7.3.3B树和B+树

7.4哈希表查找

7.4.1哈希表与哈希方法

7.4.2常用的哈希方法

7.4.3处理冲突的方法

7.4.4哈希表的查找分析

7.5C++中的查找

7.5.1静态查找的C++程序

7.5.2动态查找的C++程序

习题7

上机练习7

第8章排序

8.1基本概念

8.2插入排序

8.2.1直接插入排序

8.2.2希尔排序

8.3交换排序

8.3.1冒泡排序

8.3.2快速排序

8.4选择排序

8.4.1简单选择排序

8.4.2堆排序

8.5归并排序

*8.6基数排序

*8.7外部排序简介

8.7.1外存信息的存取

8.7.2外部排序的基本方法

8.8C++中的排序

习题8

上机练习8

第9章常用算法设计技术

9.1蛮力算法

9.1.1蛮力算法思想

9.1.2蛮力算法应用实例——最近对问题

9.2分治算法

9.2.1分治算法思想

9.2.2分治算法设计

9.2.3分治算法设计应用实例——棋盘覆盖问题

9.3动态规划算法

9.3.1动态规划算法思想及设计

9.3.2动态规划算法应用实例——0/1背包问题

9.4贪心算法

9.4.1贪心算法技术思想

9.4.2贪心算法设计

9.4.3贪心算法应用实例——背包问题

9.5回溯算法

9.5.1回溯算法有关概念

9.5.2回溯算法思想

9.5.3回溯算法设计

9.5.4回溯算法应用实例——装载问题

9.6分支限界算法

9.6.1分支限界算法思想

9.6.2分支限界算法设计

9.6.3分支限界算法应用实例——任务分配问题

习题9

上机练习9

第10章标准模板库

10.1STL简介

10.1.1容器

10.1.2迭代器

10.1.3算法

10.2STL应用实例

10.2.1双向链表操作的STL实现

10.2.2STL测试程序

习题10

上机练习10

参考文献