![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 71
菜鸟550号
这个作者很懒,什么都没留下…
展开
-
线性表的基本概念
采用顺序存储的方式实现的线性表简称为顺序表,把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。原创 2023-04-16 14:52:51 · 102 阅读 · 1 评论 -
链式存储与单链表(上)
按位序每个结点只含有一个指针域来存放其直接后继元素的地址;//自定义链表的数据元素为整数(也可以定义数据元素为结构体类型,根据实际需求定义,这里为了方便就定义整数类型)//存放结点的数据元素//指向下一个结点的指针//LNode 为结构体别名,LinkList为结构体类型指针的别名带头结点的单链表;原创 2023-04-30 21:07:09 · 54 阅读 · 0 评论 -
链式存储和单链表(下)
目录。原创 2023-04-30 23:20:55 · 66 阅读 · 0 评论 -
单链表的其他操作
注意:链表需要是升序或者是降序的。那么应该如何实现将上图中的两个链表连接在一起呢?有几种方法?原创 2023-05-01 16:29:07 · 221 阅读 · 0 评论 -
链表常用考题
2.分别查询出两个链表的长度,La长度为9,Lb链表长度为6,然后将p1指针向后移动(9-6)个结点,p1所指结点为C, p1指针所指部分链表长度为6,p2此时所指链表长度也为6,相等;然后再让p1和p2一起向后移动,当p1移动到NULL时,p2正好在倒数第二个结点,大家可以自己对照表格比划一下;3.然后p1,p2开始向后一起移动,当p1==p2时,此时的地址即为汇聚结点;先让p1从头结点向后移动两个结点,p2不动,此时p1已经到了结点B,思路:假定链表La,Lb为两个汇聚的单链表;原创 2023-05-02 23:19:22 · 176 阅读 · 0 评论 -
栈的顺序存储实现和链式存储实现
相比于单链表,栈的实现显得简单许多,所以只要大家掌握了单链表的代码,完成这章节内容应该相当容易;大家多复习复习单链吧。原创 2023-05-04 22:20:56 · 237 阅读 · 0 评论 -
队列的顺序存储实现
如上图,假设需要将元素1 到元素12 全部入队,当t元素1 到 元素10入队到队列中时,发现队列已经满了,此时元素1,2,3依次出队,头指针移动位置此时如果使用的是普通队列,想往队列中入队元素是无法入队的,因为队尾指针已经到了数组的最后一个位置;如果再入队,队尾指针加1,即图中下标为10的位置,明显不存在该位置,入队会发生错误;即使队头处有空位置,也无法入队元素,这种情况就是假溢出;所以普通队列的这种方法浪费了内存;所以下面我们使用循环队列来解决假溢出的问题;原创 2023-05-07 23:04:16 · 686 阅读 · 0 评论 -
队列的链式存储实现
链式队列 : 用链表形式实现的队列。链表结点为队列数据存储区,链表结点包括两部分数据存储。指针存储区 :存放下一个链表结点的地址。数据存储区 :存放真实有效数据的区域。头指针执行头结点,尾指针指向尾结点。原创 2023-05-19 15:29:23 · 124 阅读 · 1 评论 -
字符串的匹配算法(BF+KMP)
它的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。kmp算法的时间复杂度O(m+n)。原创 2023-05-24 23:03:57 · 354 阅读 · 0 评论 -
树和二叉树
文章目录一、树和二叉树1、树的定义2、基本术语:3、树的性质二、 二叉树1.定义2.几种特殊二叉树3、二叉树的性质不考研的话,搞清楚树的概念和原理就行了;代码少一、树和二叉树1、树的定义2、基本术语:3、树的性质二、 二叉树1.定义2.几种特殊二叉树3、二叉树的性质原创 2023-05-25 13:13:17 · 28 阅读 · 0 评论 -
二叉树的存储结构和二叉树的遍历方法以及实现代码
实现代码在上述代码段中,函数为 PostOrder1(BiTree TT)、InOrder1(BiTree TT)、PreOrder1(BiTree TT);如果二叉树如下图中所示,补全节点使其成为完全二叉树的方法太浪费空间;给定一个序列,在给定一个遍历的方法,能否将还原出二叉树呢?下图中的左右 要理解为树木,不要片面的理解成节点;答案是:不能,如下图,给定先序遍历 123。先看动图看遍历步骤,再看实例;先序遍历序列+中序遍历序列。后序遍历序列+中序遍历序列。层次遍历序列+中序遍历序列。原创 2023-05-25 20:35:57 · 1623 阅读 · 0 评论 -
线索二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2023-05-26 10:36:50 · 92 阅读 · 0 评论 -
树、森林和二叉树
文章目录一、树1.树的存储结构:2、树的双亲表示法:3、树的孩子表示法二、树、森林和二叉树1、树的数据结构和二叉树的数据结构2、树和二叉树之间的转换3、树、森林的遍历1.树的遍历2 森林的遍历一、树1.树的存储结构:2、树的双亲表示法:3、树的孩子表示法二、树、森林和二叉树1、树的数据结构和二叉树的数据结构2、树和二叉树之间的转换3、树、森林的遍历1.树的遍历2 森林的遍历原创 2023-05-26 20:55:56 · 30 阅读 · 0 评论 -
哈夫曼树
给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。原创 2023-05-28 11:07:08 · 41 阅读 · 0 评论 -
图的定义和一些基本术语
图(Graph )是一种比线性表和树更复杂的数据结构。在线性表中,数据元素之间是 一对一 的关系,每个数据元素 只有一个直接前驱 和一个直接后继。在树形结构中,数据元素之间有明显的 层次关系,上一层的数据元素(结点)和下一层的元素(结点)是一对多的关系。而在图形结构中, 数据元素之间的关系是任意的, 是多对多的关系。原创 2023-05-28 15:59:59 · 111 阅读 · 0 评论 -
图的存储结构
前言学习内容。原创 2023-05-28 22:30:25 · 116 阅读 · 0 评论 -
图的基本操作
假设NextAdjVex(G,0,3):含义就是在图G中,查看顶点A相对于D的下一个邻接点,为-1;在邻接表中,在B和D的边链表中增加一个结点,可以将结点插在边链表头部,这样时间复杂度业务O(1);假设NextAdjVex(G,0,1):含义就是在图G中,查看顶点A相对于B的下一个邻接点,为C;在邻接矩阵中吗,扫描E行,找到第一个为1的值即可,如图所示,第一个邻接顶点为C,不存在返回-1;在邻接表中,在B和边链表中增加一个结点,可以将结点插在边链表头部,这样时间复杂度业务O(1);时间复杂度为O(1)原创 2023-05-29 22:20:03 · 868 阅读 · 0 评论 -
图的遍历
图,从不同的顶点出发得到的序列不一样,就算是从相同的顶点出发得到的序列也可能不一样,要看图的存储结构;如果是非连通图,调用一次BFS函数无法实现对图的遍历;如下图所示,分别用邻接矩阵和邻接表来存储该图;下图中,左侧为针对非连通图的伪代码;原创 2023-05-30 17:00:19 · 47 阅读 · 0 评论 -
查找算法(折半查找)
此时low=0;high=10;第一轮查找,直接比较mid指针(下标为5)所指的元素(25) 和 待查找的元素35,发现 25<35,由此可知,待查找元素35应该在mid指针的右侧,即下图中红色区域内;我们已知low为左边界的标志,我们此时要查找的元素可能在红色区域内,而此时我们的low指针在红色区域之外,所以此时我们需要缩小查找范围,使得low指针在红色区域之内,我们将low指向mid+1,因为mid已经比较过了,不符合,所以可以直接将low=mid+1,然后进行第二轮查找;图片如下所示:原创 2023-06-04 16:35:50 · 490 阅读 · 0 评论 -
查找和查找算法(顺序查找)
如果表中存在这样的一个数据元素,则称查找是成功的,否则查找是失败的。平均查找长度(ASL,Average Serach Length):所有查找过程中进行关键字比较次数的平均值,用于衡量查找算法的效率,包括成功和失败两种情况。查找24时,查找到23,发现23<24,指针向后移动,发现25>24,此时就不会向后寻找了,因为数组时有序的,后面的数都比25大;假设依旧是在下面有序表中,查找元素23,跳跃法,就是如果比较元素不一致,指针就向后跳动几个位置;原创 2023-05-31 19:15:08 · 717 阅读 · 0 评论