没有合适的资源?快使用搜索试试~ 我知道了~
本文章主要对数据结构和算法做一个介绍和程序设计讲解,对于数据结构和算法其实我更愿意称数据结构为一种数据思想,对于之前我们学的所有东西而言,例如 c,c++,网络,进程线程,数据库什么的,他们所有的特点都是要我们去记住它,掌握它怎么使用,语法规则,函数用法,参数含义,这些是我们关注的点,但对于数据结构和算法而言,其 实它没有什么新奇的关键词语法,没有功能强大的 api,那为什么数据结构能够独立出来,成为很火的一种学科呢,就是因为数据结构讲的其实是一种数据思想,作者希望读者在学完数据结构后不仅仅是会用数据结构的作物,更要时刻明白其中的思想才是最重要的,例如学习完栈,我们知道栈这种结构的一种使用的同时,更应该去理解栈的这种思想,这种使用条件使其成为一种可以先进后出的结构,来解决一些常见的问题,例如递归问题。不仅栈是如此,后面介绍的形形色色的结构都是由一些基础结构通过限制某种条件(例如栈,队列),或通过结构的组合(例如结构体和结构体指针组合形成链表)来变化成各种功能强大的数据存储结构,所以我们应该清楚,数据结构我们是学不完的,每一种条件每一次组合都可以形成一种新的存储结构。
资源推荐
资源详情
资源评论
数据结构与算法
嵌入式
2021-12-31
作者:九月
邮箱:3154643536@qq.com
前言
本文章主要对数据结构和算法做一个介绍和程序设计讲解,对于数据结构和算法
其实我更愿意称数据结构为一种数据思想,对于之前我们学的所有东西而言,例如 c,c++,
网络,进程线程,数据库什么的,他们所有的特点都是要我们去记住它,掌握它怎么使用,
语法规则,函数用法,参数含义,这些是我们关注的点,但对于数据结构和算法而言,其
实它没有什么新奇的关键词语法,没有功能强大的 api,那为什么数据结构能够独立出来,
成为很火的一种学科呢,就是因为数据结构讲的其实是一种数据思想,作者希望读者在学
完数据结构后不仅仅是会用数据结构的作物,更要时刻明白其中的思想才是最重要的,例
如学习完栈,我们知道栈这种结构的一种使用的同时,更应该去理解栈的这种思想,这种
使用条件使其成为一种可以先进后出的结构,来解决一些常见的问题,例如递归问题。不
仅栈是如此,后面介绍的形形色色的结构都是由一些基础结构通过限制某种条件(例如栈,
队列),或通过结构的组合(例如结构体和结构体指针组合形成链表)来变化成各种功能强大
的数据存储结构,所以我们应该清楚,数据结构我们是学不完的,每一种条件每一次组合都
可以形成一种新的存储结构,但是通过学习完一些数据结构后掌握它们的思想我想我们是
可以完成的。
修订记录
V1.1
增加 list 链表操作 API
目录
前言 ................................................................................................................................................................ 1
1.数据结构简介 ......................................................................................................................................... 8
2.逻辑结构和物理结构 ........................................................................................................................... 8
2.1.逻辑结构 .................................................................................................................................... 8
2.1.1.集合结构 ....................................................................................................................... 8
2.1.2.线性结构 ....................................................................................................................... 8
2.1.3.树性结构 ....................................................................................................................... 8
2.1.4.图性结构 ....................................................................................................................... 9
2.2.物理结构 .................................................................................................................................... 9
2.2.1.顺序存储结构 ............................................................................................................. 9
2.2.2.链式存储结构 ............................................................................................................. 9
3.算法概述 .................................................................................................................................................. 9
3.1 算法的特性 ................................................................................................................................. 9
3.2 算法设计的要求 ...................................................................................................................... 10
3.3 算法时间复杂度 ...................................................................................................................... 10
3.3.1.算法时间复杂度定义 .............................................................................................. 10
3.3.2.时间复杂度的计算 .................................................................................................. 10
3.3.3.最坏情况和平均情况的时间复杂度 .................................................................. 11
3.4 算法空间复杂度 ...................................................................................................................... 11
4.线性表 ..................................................................................................................................................... 11
4.1.线性表的顺序存储结构 ....................................................................................................... 12
4.1.1.获取元素操作 ........................................................................................................... 12
4.1.2.插入操作 ..................................................................................................................... 12
4.1.3.删除指定值操作 ....................................................................................................... 14
4.1.4.清空操作 ..................................................................................................................... 14
4.1.5.线性表顺序存储的优缺点..................................................................................... 14
4.2.线性表的链式存储结构 ....................................................................................................... 15
4.2.1.单链表的插入操作示例 ......................................................................................... 16
4.2.2.单链表的删除操作示例 ......................................................................................... 18
4.2.3.单链表的优缺点 ....................................................................................................... 19
4.3.链表的几种形式 ..................................................................................................................... 19
4.3.1.静态链表 ..................................................................................................................... 20
4.3.2.循环链表 ..................................................................................................................... 23
4.3.1.双向链表 ..................................................................................................................... 23
5.栈和队列 ................................................................................................................................................ 26
5.1.栈的介绍 .................................................................................................................................. 27
5.1.1.顺序栈的结构设计 .................................................................................................. 27
5.1.2.顺序栈的插入操作 .................................................................................................. 27
5.1.3.顺序栈的出栈操作 .................................................................................................. 28
5.1.4.双顺序栈共享空间的设计..................................................................................... 28
5.1.5.链式栈的设计 ........................................................................................................... 30
5.1.6.链式栈的入栈设计 .................................................................................................. 31
5.1.7.链式栈的出栈设计 .................................................................................................. 32
5.1.8.栈的作用 ..................................................................................................................... 32
5.2.队列的介绍 .............................................................................................................................. 41
5.3.队列的程序设计示例 ........................................................................................................... 41
5.3.1.入队操作示例 ........................................................................................................... 42
5.3.2.出队操作示例 ........................................................................................................... 42
5.4.循环队列 .................................................................................................................................. 43
5.4.1 循环队列入队操作 ................................................................................................... 43
5.4.2 循环队列出队操作 ................................................................................................... 43
6.KMP 模式匹配算法 ............................................................................................................................... 43
6.1.next 数组的推导 ................................................................................................................... 44
6.2.以 next 数组进行 KMP 匹配推导算法程序..................................................................... 45
6.3.KMP 改进算法的 nextval 数组推导 ................................................................................. 46
7.树 .............................................................................................................................................................. 47
7.1.树的一些名词含义 ................................................................................................................ 48
7.2.树结构和线性结构的区别 .................................................................................................. 48
7.3.树结构的存储方式 ................................................................................................................ 48
7.3.1.双亲表示法 ................................................................................................................ 48
7.3.2.孩子表示法 ................................................................................................................ 49
7.3.3.孩子兄弟表示法 ....................................................................................................... 49
8.二叉树 ..................................................................................................................................................... 50
8.1.二叉树的特点 ......................................................................................................................... 50
8.1.1.特殊二叉树特点 ....................................................................................................... 51
8.2.二叉树的性质 ......................................................................................................................... 52
8.3.二叉树的存储结构 ................................................................................................................ 53
8.4.二叉树的遍历 ......................................................................................................................... 53
8.4.1.前序遍历 ..................................................................................................................... 53
8.4.2.中序遍历 ..................................................................................................................... 54
8.4.3.后序遍历 ..................................................................................................................... 55
8.4.4.顺序遍历 ..................................................................................................................... 57
8.5.二叉树的建立 ......................................................................................................................... 57
8.6.二叉树的结点插入 ................................................................................................................ 59
8.7.二叉树的结点删除 ................................................................................................................ 60
8.8.递归计算二叉树的高度,结点数和叶子结点数 ......................................................... 63
9.哈夫曼树 ................................................................................................................................................ 64
9.1.如何构建一颗哈夫曼树 ....................................................................................................... 65
9.2.程序实现示例 ......................................................................................................................... 66
9.2.1.结构定义示例 ........................................................................................................... 66
9.2.2.初始化结点示例 ....................................................................................................... 67
9.2.3.哈夫曼树构建示例 .................................................................................................. 67
10.平衡二叉树(AVL 树) ........................................................................................................................ 68
剩余142页未读,继续阅读
资源评论
九月丫
- 粉丝: 44
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功