数据结构与算法详解是一本以实例和实践为主的图书,主要是经典的数据结构与常见算法案例,来自历年考研、软考等考题,有算法思路和完整的代码,最后提供了C语言调试技术的方法。

后续配套微课视频。

第0章  基础知识.... 2

0.1  基本概念和术语... 2

0.2  数据的逻辑结构与存储结构... 3

0.2.1  逻辑结构... 3

0.2.2  存储结构... 4

0.3  抽象数据类型及其描述... 5

0.3.1  什么是抽象数据类型... 5

0.3.2  抽象数据类型的描述... 5

0.4  算法... 5

0.4.1  数据结构与算法的关系... 6

0.4.2  什么是算法... 6

0.4.3  算法的五大特性... 6

0.4.4  算法的描述... 6

0.5  算法分析... 7

0.5.1  算法设计的4个目标... 7

0.5.2  算法的时间复杂度... 7

0.5.3  算法的空间复杂度... 9

第1章  线性表

1.1  顺序表及其应用

1.1.1  将两个有序的线性表合并
为一个有序的线性表

1.1.2  将两个无序的线性表合并
为一个线性表..

1.1.3  求两个线性表的差集..

1.1.4  分解顺序表,使左边的
元素小于或等于0,右边的
大于

1.1.5  求两个任意长度的整数
之和

1.1.6  求两个元素序列的
中位数.

1.2  单链表及其应用.

1.2.1  逆置单链表... 30

1.2.2  求两个单链表的差集... 34

1.2.3  合并两个单链表... 37

1.2.4  找出单链表表示的两个单词
共同后缀起始地址... 40

1.2.5  找出单链表中倒数第k
位置上的节点... 42

1.3  循环单链表及其应用... 44

1.3.1  分解一个循环单链表为
两个循环单链表... 44

1.3.2  构造3个循环单链表... 47

1.3.3  约瑟夫问题... 50

1.4  双向链表及其应用... 53

1.4.1  双向链表的创建与插入
操作... 55

1.4.2  约瑟夫问题(双向链表)... 58

1.5  线性表的典型应用... 60

1.5.1  将两个一元多项式相加... 60

1.5.2  将两个一元多项式相乘... 65

第2章  栈... 71

2.1  顺序栈及其应用... 71

2.1.1  将元素分别入栈和出栈... 73

2.1.2  共享栈的入栈和出栈操作... 75

2.1.3  求(n,m)的值... 78

2.1.4  求Ackermann(m,n)的值... 80

2.2  链栈及其应用... 83

2.2.1  将十进制数转换为
八进制数... 86

2.2.2  检查表达式中的括号
是否匹配... 88

2.2.3  求算术表达式的值... 90

2.2.4  判断字符串是否中心
对称... 96

第3章  队列.... 98

3.1  顺序队列及其应用... 98

3.1.1  将顺序循环队列中的元素
分别入队和出队... 101

3.1.2  舞伴配对... 104

3.1.3  模拟轮渡管理... 106

3.2  链式队列及其应用... 108

3.2.1  队列在杨辉三角中的
应用... 111

3.2.2  判断字符串是否为回文... 114

3.3  栈和队列的综合应用──停车场
管理... 116

第4章  串.... 126

4.1  顺序串及其应用... 126

4.1.1  利用串的基本运算进行
赋值、插入和删除等操作... 130

4.1.2  将浮点数转换为对应的串... 134

4.1.3  求最长公共子串... 135

4.1.4  求等值子串... 137

4.1.5  将长度为5的单词转换为
大写形式... 138

4.1.6  将小写字母a左、右两边的
串互换... 140

4.2  串的模式匹配... 142

第5章  数组.... 149

5.1  一维数组及其应用... 149

5.1.1  查找第k小元素... 150

5.1.2  将奇数移动到偶数的
左边... 151

5.2  二维数组(矩阵)及其应用... 153

5.2.1  输出魔方阵... 153

5.2.2  输出内螺旋矩阵... 155

5.2.3  输出逆螺旋矩阵... 156

5.2.4  输出外螺旋矩阵... 158

5.2.5  输出蛇形方阵... 159

5.2.6  输出折叠方阵... 161

5.3  特殊矩阵的压缩存储及其应用... 162

5.4  稀疏矩阵的压缩存储及其应用... 166

第6章  广义表.... 172

6.1  头尾链表表示的广义表及其
应用... 172

6.2  扩展线性链表表示的广义表
及其应用... 178

6.3  广义表的综合应用——导师-学生
制管理... 181

第7章  树... 187

7.1  树的表示及创建二叉树... 187

7.1.1  采用广义表创建二叉树... 194

7.1.2  创建二叉树... 196

7.2  二叉树的遍历... 199

7.2.1  非递归先序遍历二叉树... 205

7.2.2  按层次遍历二叉树... 207

7.2.3  由中序和后序序列构造
二叉树... 209

7.2.4  输出树的各条边... 212

7.3  二叉树的应用... 214

7.3.1  求树中节点的个数... 214

7.3.2  交换二叉树的左右子树... 216

7.3.3  判断二叉树是否为完全
二叉树... 219

7.3.4  计算二叉树的高度和最大
宽度... 223

7.3.5  求树中根节点到任意节点
之间的路径... 226

7.4  哈夫曼树... 230

数据结构与算法详解目录相关推荐

  1. 数据结构与算法详解(含算法分析、动图图解、Java代码实现、注释解析)

    数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 数据结构和算法的关系: 程序 = 数据结构 + 算法 数据结构是算法的基础, 换言之,想要学好算法,需要把数 ...

  2. 数据结构和算法详解(三)——递归、排序、散列表

    一.递归 一.什么是递归? 1.递归是一种非常高效.简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索.前中后序二叉树遍历等都是使用递归. 2.方法或函数调用自身的方式称为递归调用,调用称 ...

  3. 数据结构和算法详解(四)——五大基本算法思想

    更多例子可参考:https://blog.csdn.net/Aidam_Bo/article/details/86715865 一.穷举算法思想 穷 举 算 法 (ExhaustiveA ttack ...

  4. 数据结构和算法详解(二)——线性表(数组、链表、栈、队列)

    一.数组 线性表:   线性表就是数据排成像一条线一样的结构.每个现行表上的数据最多只有前和后两个方向.常见的线性表结构:数组,链表.队列.栈等. 什么是数组: 数组(Array)是一种线性表数据结构 ...

  5. 数据结构——插入排序算法详解(C语言)

    插入排序的算法思想是:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适合位置上,直到所有待排序记录全部插入为止. 例如,打扑克牌在抓牌时,每抓一张牌,就插入到合适的位置,直到抓 ...

  6. 【百度飞浆】RCNN系列目标检测算法详解

    RCNN系列目标检测算法详解 目录 两阶段目标检测算法发展历程 R-CNN R-CNN网络结构 R-CNN网络效果 Fast R-CNN Fast R-CNN网络效果 Faster R-CNN Fas ...

  7. JVM之垃圾收集机制四种GC算法详解

    JVM之四种GC算法详解 目录: 什么是GC? GC算法之引用计数法 GC算法之复制算法(Copying) GC算法之标记清除(Mark-Sweep) GC算法之标记压缩(Mark-Compact) ...

  8. 数据结构--图(Graph)详解(四)

    数据结构–图(Graph)详解(四) 文章目录 数据结构--图(Graph)详解(四) 一.图中几个NB的算法 1.普里姆算法(Prim算法)求最小生成树 2.克鲁斯卡尔算法(Kruskal算法)求最 ...

  9. 数据结构--图(Graph)详解(三)

    数据结构–图(Graph)详解(三) 文章目录 数据结构--图(Graph)详解(三) 一.深度优先生成树和广度优先生成树 1.铺垫 2.非连通图的生成森林 3.深度优先生成森林 4.广度优先生成森林 ...

最新文章

  1. 【干货】Oracle数据库常用十一大操作指令
  2. 如何通过插件携带第二个单据体到下游单据
  3. IOC容器特性注入第一篇:程序集反射查找
  4. 2018.4.3 做lab0
  5. 用大白话带你理解CPU指令集
  6. VB装linux教程,RHEL6下VirtualBox安装Linux系统
  7. 3D打印自动支撑算法
  8. tomcat-解决get请求中文乱码问题
  9. php爬取ins图片_python爬取【追新番】日剧资源
  10. 基于opencv python 的网线线序识别(三)
  11. Android开发者的Ane简单入门
  12. 使用海康工业相机的心路历程(一)
  13. 多线程实现多个窗口卖票问题
  14. 03-Tensorboard的使用 (老衲又卷土重来了!!!)
  15. PostgreSQL 存储过程(函数)创建和基本语法
  16. Android x86启动后拖动系统音量设置
  17. 看板任务管理,让你分分钟提高工作效率!
  18. 案例2:qqZone
  19. 什么是活动分区?活动分区的标志是什么?
  20. node调用ffmpeg转流

热门文章

  1. mysql增加布尔字段_如何将布尔字段添加到MySQL?
  2. 解析CI即CodeIgniter框架在Nginx下的重写规则
  3. 树形DP入门题目推荐以及解析
  4. ArrayList,Vector, LinkedList的存储性能和特性?
  5. SpringBoot——项目搭建、整合Mybatis、整合redis(集群)
  6. Java stackoverflowerror异常与outofmemoryerror异常区别
  7. 让Win10文件管理器的详细信息窗格显示更多信息
  8. sublime Text3常用快捷键
  9. retain和copy还有assign的区别
  10. IOS开发学习笔记018- 一般控件的使用