数据结构
文章平均质量分 86
以本人自学数据结构的笔记分享为主,其中包含一些常见的书写代码以及解题的思路,以学习辅助学习数据结构的内容为辅持续更新
小侯不躺平.
暂就读于西安邮电大学计算机科学与技术专业 普普通通一枚大学生 21级计科
展开
-
数据结构之线索二叉树详细解释
1.1 线索二叉树的原理我们现在倡导节约型社会,一切都应该以节约为本。但当我们创建二叉树时我们会发现其中一共有两个指针域,有的指针域指向的结构为空,这也就浪费了很多空间原创 2022-05-02 17:27:04 · 26502 阅读 · 20 评论 -
数据结构—串的详细解释(含KMP算法)
串:串是由零个或多个字符组成的有限序列,又叫字符串(其的存储结构包含顺序表存储、单链表存储的形式。)一般记为s="a1a2a3....an"(n>=0),其中,s是串的名称,用双引号(也可以使用单引号)括起来的字符序列是串的值,注意引号不是串的内容。ai(i原创 2022-10-16 01:23:56 · 6490 阅读 · 5 评论 -
数据结构栈的使用——马踏棋盘
在函数中首先判断马有没有将棋盘走完,如果走完了则在其中将判断变量值设置为1,且定义一个次数变量,加一个循环其停止条件则是该栈为空,当栈一直不为空时则让一个结构体存储栈顶的数据,然后进行退栈操作随后将map中的栈顶位置存储为最后一个位置,依次类推存储马走的位置。如果马没有将棋盘走完则让马的当前位置判断周围的八个点是否可以走,如果可以走则标记该点已走过然后将数据存入栈中,如果走不了则继续进行循环直到八个点都不可以走之后则将栈元素退出然后标记值设置为0,再次调用该函数让马继续走。原创 2022-09-29 00:03:00 · 1286 阅读 · 0 评论 -
数据结构——栈和队列详细解释
你们在使用电脑中也会经历过机器有时会处于疑似死机的状态,鼠标点什么地方都没有任何反应,双击任何快捷键都不动弹。就当你失去内心时,机器突然对你刚的所有操作都执行了一遍。这是因为操作系统在当时可能CPU没有忙过来。操作系统中应用了一种数据结构来实现上述所说的问题也就是先进先出的功能,这就是队列。队列是一种先进先出的线性表简称FIFO。允许插入的操作为队尾,允许删除的操作为队头。就类似于最近几年的做核酸排队的操作,你在入队时是从队尾排队做核酸,做完之后是从队伍的头部做完后退出队伍。原创 2022-09-24 16:21:58 · 2426 阅读 · 5 评论 -
平衡二叉树详解 通俗易懂
平衡二叉树构建的基本思想就是在构建二叉排序树的过程中,每当插入一个结点的时候,先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡树。在保持二叉排序树特性的前提下,调整最小不平衡树中各结点之间的连接关系,进行相应的旋转,使之称为新的平衡子树。为了我们以后的讲解看起来更加轻松一点,我们先讲述一个平衡二叉树构建过程的例子。假设我们现在有一个数组a【10】={ 3,2,1,4,5,6,7,10,9,8}需要构建二叉排序树。在没有学习平衡二叉树之前,根据二叉排序树的特性,我们通常会将它构建称为图5的样子。.原创 2022-06-16 01:32:16 · 11782 阅读 · 11 评论 -
【数据结构与算法】图的遍历(深度优先遍历DFS算法)
1.1深度优先遍历深度优先遍历(depth first search),也有称为深度优先搜索简称DFS。它的主要思想就是例如找钥匙一样。例如:我们的一把车钥匙被搞丢了但是可以确定的是它一定就在家里的某个位置,所以我们需要从房间开始寻找,可是我们是该在房间某一处寻找还是将一整个房间搜索完之后再找其他房间的地方呢?在深度优先遍历意思就是将一个房间的所有地方搜索完之后再进行其他房间的搜索,直至找到车钥匙为止。假设你现在需要完成一个任务,要知道你在如下迷宫中,从顶点A开始要走遍所有图中的顶点并作上标记,注.原创 2022-05-13 08:15:00 · 9333 阅读 · 3 评论 -
数据结构之图的详细介绍(上){邻接矩阵、邻接表}
1.1图的定义 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在前几个博客里的树结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个数据元素有关,但只能和上一层中的一个元素相关,这就类似于一对父母可以有多个孩子,但多个孩子只能有一对父母是一样的。可先现实生活之中,朋友关系很复杂,可能我的两个朋友也互相认识,研究人际关系时我们就要考虑多对多的情况了,这就是我们这篇博客所要讲述的主题——图,图是一种较线性表和树更加复...原创 2022-05-11 01:28:54 · 2620 阅读 · 3 评论 -
二叉排序树的基本操作
二叉排序树(Binary Sort Tree),又称为二叉查找树。它或者是一颗空树,或者是具有下列性质的二叉树。(1)若它的左子树不空,则左子树上的所有结点的值均小于它的根结点的值。(2)若它的右子树不空,则右子树上的所有结点的值均大于它的根结点的值。(3) 它的左、右子树也分别为二叉排序树。 1.1 二叉排序树的查找操作首先二叉树的结构为:typedef struct BitNode{int data;struct B...原创 2022-05-26 23:50:01 · 1399 阅读 · 4 评论 -
数据结构之线索二叉树的中序遍历(详细解释)
据本人上一篇博客的解释大家应该对线索二叉树有一定认识了,线索二叉树是利用了指向NULL的指针让其不浪费,所以一个结点有两个指针,分别为左指针和右指针,让本来指向NULL的左指针和右指针分别指向该结点在中序遍历后的前驱结点和后继结点,如果没有前驱结点则指向NULL就可以。每一个结点都是如下的样子:结构体的具体实现代码如下:typedef struct stu{ char name[28]; int num; int ltag,rtag //标志结点原创 2022-05-06 14:42:40 · 6851 阅读 · 5 评论 -
数据结构之二叉树(简单使用及知识点)
1.1二叉树定义二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。结点的层次是从根开始定义的,根为第一层,根的孩子为第二层。若结点在l层则其子树就在l+1层。其双亲在同一层的结点互为堂兄弟。下图中D,E,F为堂兄弟。树中结点的最大层次称为树的深度或高度,下图树的深度为5.左图为二叉树的表示左图因为D结点有三个子树所以它不是二叉树1.2 二叉树的特点二叉树的特点有:1).原创 2022-04-28 15:09:47 · 2616 阅读 · 6 评论