更新时间:2023-07-17 19:21:41
封面
版权信息
内容简介
前言
为什么要学习数据结构与算法
如何学好数据结构与算法
如何使用本书
致谢
第一篇 基础知识
第1章 数据结构概述
1.1 为什么要学习数据结构
1.2 基本概念和术语
1.3 数据的逻辑结构与存储结构
1.3.1 逻辑结构
1.3.2 存储结构
1.4 抽象数据类型及其描述
1.4.1 什么是抽象数据类型
1.4.2 抽象数据类型的描述
1.5 算法
1.5.1 数据结构与算法的关系
1.5.2 什么是算法
1.5.3 算法的五大特性
1.5.4 算法的描述方式
1.6 算法分析
1.6.1 算法设计的4个目标
1.6.2 算法效率评价
1.6.3 算法时间复杂度
1.6.4 算法空间复杂度
1.7 学好数据结构的秘诀
第2章 数据结构与算法基础
2.1 递归与非递归
2.1.1 函数的递归调用
2.1.2 递归应用举例
2.1.3 迭代与递归
2.2 指针
2.2.1 什么是指针
2.2.2 指针变量的间接引用
2.2.3 指针与数组
2.2.4 指针函数与函数指针
2.3 参数传递
2.3.1 传值调用
2.3.2 传地址调用
2.4 结构体
2.4.1 结构体的定义
2.4.2 指向结构体的指针
2.4.3 用typedef定义数据类型
2.5 小结
第二篇 线性数据结构
第3章 线性表
3.1 线性表的定义及抽象数据类型
3.1.1 线性表的逻辑结构
3.1.2 线性表的抽象数据类型
3.2 线性表的顺序表示与实现
3.2.1 线性表的顺序存储结构
3.2.2 顺序表的基本运算
3.2.3 顺序表的实现算法分析
3.2.4 顺序表的优缺点
3.2.5 顺序表应用举例
3.3 线性表的链式表示与实现
3.3.1 单链表的存储结构
3.3.2 单链表上的基本运算
3.3.3 单链表存储结构与顺序存储结构的优缺点
3.3.4 单链表应用举例
3.4 循环单链表
3.5 双向链表
3.5.1 双向链表的存储结构
3.5.2 双向链表的插入和删除操作
3.5.3 双向链表应用举例
3.6 综合案例:一元多项式的表示与相加
3.6.1 一元多项式的表示
3.6.2 一元多项式相加
3.7 小结
第4章 栈和队列
4.1 栈的定义与抽象数据类型
4.1.1 什么是栈
4.1.2 栈的抽象数据类型
4.2 栈的顺序表示与实现
4.2.1 栈的顺序存储结构
4.2.2 顺序栈的基本运算
4.2.3 顺序栈应用举例
4.3 栈的链式表示与实现
4.3.1 栈的链式存储结构
4.3.2 链栈的基本运算
4.4 栈与递归
4.4.1 递归
4.4.2 消除递归
4.5 队列的定义与抽象数据类型
4.5.1 什么是队列
4.5.2 队列的抽象数据类型
4.6 队列的顺序存储及实现
4.6.1 顺序循环队列——顺序队列的表示
4.6.2 顺序循环队列的基本运算
4.7 队列的链式存储及实现
4.7.1 链式队列的表示
4.7.2 链式队列的基本运算
4.8 双端队列
4.8.1 什么是双端队列
4.8.2 双端队列的应用
4.9 栈与队列的典型应用
4.9.1 求算术表达式的值