![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 73
He_xj
一枚努力学习的同学
展开
-
KMP算法代码实现
其中next数组的含义就是,当子串的第k个字符与主串发生错误匹配时,跳到子串的next[j]位置重新与主串当前位置进行比较。这样的算法也可以通过暴力的方式解决,但是在极端情况下暴力算法会有很大的时间开销,因此KMP算法应运而生。数组作为回溯子串位置的依据(以此加快子串的滑动从而防止了主串的回溯,很大程度上优化了程序的时间复杂度)KMP算法的主要原理就是在匹配的过程中减少不必要的比对,从而减少计算次数降低时间复杂度。无关了,因此在KMP算法中我们主要研究子串的构造,并通过研究子串构造出一个。原创 2024-03-10 23:16:16 · 362 阅读 · 0 评论 -
中缀表达式转换逆波兰式(后缀表达式)
算法思路来自于王道的数据结构。原创 2024-03-03 23:27:38 · 400 阅读 · 0 评论 -
数据结构——排序
所谓排序就是要整理表中的元素, 使之按照关键字递增或递减有序排列。如果关键字相同的两个元素,在排序后的相对位置不发生改变那么就称这个这个排序的算法是稳定的,反之则不稳定。可以参考动态变换那么就可以得到代码折半插入排序代码如下:希尔排序希尔排序是将待排序的数组元素 按下标的一定增量分组 ,分成多个子序列,然后对各个子序列进行直接插入排序算法排序;然后依次缩减增量再进行排序,直到增量为1时,进行最后一次直接插入排序,排序结束。代码如下:冒泡排序代码如下:快速排序代码如下:简原创 2022-06-14 17:31:48 · 130 阅读 · 0 评论 -
数据结构——查找
在一些(有序的/无序的)数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找。也就是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或数据元素。......原创 2022-06-14 12:00:31 · 640 阅读 · 0 评论 -
数据结构——图
按照边的有无方向可以分为有向图和无向图;显然有向图就是有一个指向表示(一条边为 而向图则表示A与B是连通的:即对于无向图都是成立的)1. 端点和邻接点:2. 顶点的度、出度和入度ABCD点出度入度A10B11C013. 完全图这就是一个有向完全图ab这就是一个无向完全图AB4. 稀疏图和稠密图5. 子图设有两个图和,如果V’是V的子集,即⊆\subseteq⊆ 且是的子集即⊆\subseteq⊆ ,则称G’是G的子图注意:并非V和E原创 2022-06-04 17:05:20 · 4290 阅读 · 0 评论 -
数据结构——树
1. 树的定义树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:其中有一些比较重要的公式以上就是树的一些基本概念和关键字了Attention:中序遍历:主要方式为: 后序遍历:主要方式为: 为了帮助理解特地献上一份 文章 点击跳转并查集直接上代码hhh感谢你的阅读............原创 2022-06-02 20:42:26 · 122 阅读 · 0 评论 -
Kruskal算法求解最小生成树
Kruskal 算法的思路还是非常的简单的先将所有的边都用一个结构体存起来经所有的边按照权重排序即可(因为我们要求的其实就是极小连通子图,所以我们排序后可以直接对边进行连接即可,因为我们将所有的点都放入集合后,得到的边权之和一定是最小的)最后就是函数内部实现,既然我们谈到了 集合中,那么如何判断这个点是否在集合内部呢? 这是我们就可以使用并查集这个算法了。//并查集int find(int x){ if(x != p[x]) return p[x] = find(p[x]);//路径压缩原创 2022-05-10 20:54:44 · 221 阅读 · 0 评论 -
数据结构——队列
首先,什么是队列呢。队列和栈相似(都是一种操作受限的线性表)他的限制主要表现在只允许在表的一端进行插入操作,而在表的另一端进行删除操作。队列基本知识队列的顺序存储结构以及环形队列数组模拟实现队列的基本操作链表实现队列C++ 中的STL实现队列队列的基本知识队列一般分为两端:1.队头(队首):进行删除元素操作的一端(这个操作也叫作出队/离队)2.队尾:进行插入新元素的一端(这个操作叫做入队/进队)。因此我们可以通过队列两端的性质发现队列其实是下图的一个线性表&n原创 2022-04-16 13:16:56 · 1372 阅读 · 0 评论 -
数据结构——栈(栈的简单应用)
上一篇文章我们介绍了C语言中栈的实现方法以及C++的STL的栈的基本操作详细可以参考文章栈下面就是栈的具体应用:目录括号匹配进制转换将表达式转换为后缀表达式(思路)有效的括号注:该题选自 :LeeCode一、问题描述给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s原创 2022-04-09 00:04:44 · 902 阅读 · 1 评论 -
数据结构——栈
栈:是一种只能在一端进行插入或删除操作的线性表(即操作受控的线性表)·栈的主要操作1.进栈:将元素从栈顶插入栈中2.出栈:将栈顶的元素弹出栈3.栈空:判断栈里是否存在元素4.栈顶:返回栈顶的元素应用栈解决表达式求值的问题…·栈的主要特点就是“先进后出”因此又称为先进后出表 栈的图示:栈的示意图这里我们将直接跳过栈的顺序存储结构,主要记录栈的链式存储结构;首先是栈的声明 我们定义其为:LinStack//typedef Elemtype 要定义的类型;定义Elemtype的类型原创 2022-04-05 16:15:01 · 1287 阅读 · 0 评论 -
数据结构——单链表
数据结构 单链表原创 2022-04-02 17:12:05 · 1613 阅读 · 0 评论