![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
考研数据结构整理
文章平均质量分 59
张李浩
这个作者很懒,什么都没留下…
展开
-
经典四大排序(动图实现)
这个大佬整理的很仔细:https://blog.csdn.net/m0_37741420/article/details/106981276?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162777450716780262565601%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162777450716780262565601原创 2021-08-01 10:24:20 · 11165 阅读 · 2 评论 -
KMP算法next[ ]如何计算
代码模板void get_next(string t, int next[]) { int i = 1, j = 0; next[1] = 0; while (i<=tlen) { if (j == 0 || t[i] == t[j]) { //next[++i]=++j; ++i; ++j; next[i] = j; } else { j = next[j]; } }}参考地址https://www.bilibili.com/video原创 2021-11-17 15:43:51 · 289 阅读 · 0 评论 -
二叉树的四大遍历方法(前中后、层次遍历)(包括typedef 树节点)
说到树的递归就胆颤心惊,发誓这几天一定要把它学好,先上学姐的代码:转载:typedef struct BiTNode { char data; struct BiTNode *rchild, *lchild; bool isfirst = true;}BiTNode, *BiTree ; //创建二叉树void DLR_DG_createTree(BiTree &T) { char c; cin >> c; if (c == '#')T = NULL; else转载 2021-09-27 22:03:02 · 104 阅读 · 0 评论 -
KMP算法
思路:BF(朴素模式匹配)朴素的模式匹配算法:KMP算法:next数组:优化代码实现:考研不要求写代码但要会手算next[j]以及知道nextval[ ]优化方法思路:BF(朴素模式匹配)朴素的模式匹配算法:直接进行搜索匹配。基本思想是:从主串S的第一个字符开始和模式T的第一个字符进行比较,若相等,则继续比较两者的后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符进行比较。重复上述过程,若T中的字符全部比较完毕,则说明本趟匹配成功;否则匹...转载 2021-09-16 16:30:26 · 192 阅读 · 0 评论 -
洛谷P1443马的遍历--------bfs
本题与走迷宫问题很像可参考模板:https://blog.csdn.net/qq_52934831/article/details/119952424?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163055948616780357263971%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=1630559.原创 2021-09-02 13:14:09 · 86 阅读 · 0 评论 -
Kruskal算法求最小生成树(合并集合)
地址:https://www.acwing.com/problem/content/861/用到的合并集合知识:https://blog.csdn.net/qq_52934831/article/details/120032035?spm=1001.2014.3001.5501描述:思想:代码:#include <iostream>//sort 函数要用到#include <algorithm>using namespace std;in原创 2021-09-01 21:59:41 · 4653 阅读 · 1 评论 -
合并集合(并查集)+求集合的个数
只实现联通功能地址:https://www.acwing.com/problem/content/838/描述:思想://普通版的find()函数,返回祖宗节点int find(int x) { if (x == p[x]) //如果x是祖先,则返回 return x; else return find(p[x]); //如果x不是祖先,那么就去问x的爸爸它的爸爸是不是祖宗节点}//路径压缩的find函数,...原创 2021-09-01 14:51:03 · 432 阅读 · 0 评论 -
prim算法求最小生成树------Acwing858
地址:描述:思想:令我困惑的点:for(int j=1;j<n;j++){if(dist[j]>g[t][j]) dist[j]=g[t][j];}这句话的涵义是为了更新生成树外的点到生成树的距离按道理来说dist[j]应该与与dijkstra算法的区别:dijkstra算法:if(dist[j]>dist[t]+g[t][j]) dist[j]=dist[t]+g[t][j];prim算法:if(dist[j]>g[t][..原创 2021-08-31 20:56:13 · 328 阅读 · 0 评论 -
邻接矩阵(考研图论)
//邻接矩阵#include<stdio.h>#include<stdlib.h>#define Status int#define OVERFLOW -2#define OK 1#define ERROR -1//邻阶矩阵#define MaxInt 32767#define MVNum 100typedef char VerTexType;//顶点的数据类型typedef int ArcType;//边的权值类型typedef struct{ Ver.原创 2021-08-31 20:25:33 · 236 阅读 · 0 评论 -
Floyd算法找最短路(基于邻接矩阵)
地址:描述:思想:代码:地址:https://www.acwing.com/problem/content/856/描述:思想:代码:#include<iostream>#include <cstring>using namespace std;const int N=210;#define INF 0x3f3f3f3fint dist[N][N];int n,m,k;//执...原创 2021-08-31 14:44:43 · 351 阅读 · 0 评论 -
SPFA算法求最短路和判断负环(支持负权边)
地址:https://www.acwing.com/problem/content/853/描述:思路:1、什么是spfa算法?SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。SPFA一般情况复杂度是O(m)O(m) 最坏情况下复杂度和朴素 Bellman-Ford 相同,为O(nm)O(nm)。bellman-ford算法操作如下:for n次 for 所有边 a,b,w (松弛操作) dis.转载 2021-08-30 19:26:26 · 309 阅读 · 0 评论 -
Dijkstra算法求最短路问题
地址:https://www.acwing.com/problem/content/851/描述:m是n^2级别的话就是稠密图,m是n级别的就是稀疏图稠密图:用堆优化(稀疏图):思路:初始时, S只包含起点s;U包含除s之外的其他顶点,且U中顶点的距离为“起点s到该顶点的距离”【例如:U中顶点v的距离为(s, v)的长度,然后s和v不相邻,则v的距离为∞】。 从U中选出“距离最短的顶点k”,并将顶点k加入到S中;同时,从U中移除顶点k。 更新U中各个顶点到起点s的距.原创 2021-08-30 11:09:54 · 431 阅读 · 0 评论 -
搜索与图论(11.4号看了bellman_sort算法)
稠密图的Dijkstra算法:题解:堆优化改进的Dijkstra算法(稀疏图)题解:问题代码:bell_man fort算法SPFA算法题解核心思想:用更新过的点,更新其他点Floyd算法解决多源问题:Prim算法求最小生成树Kruskal算法m是n^2级别的话就是稠密图,m是n级别的就是稀疏图稠密图的Dijkstra算法:题解:https://blog.csdn.net/qq_52934831/article/detai...原创 2021-08-29 23:17:37 · 128 阅读 · 0 评论 -
Acwing848有向图的拓扑序列---------bfs
地址:https://www.acwing.com/problem/content/850/描述:思路:用队列来执行 ,初始化讲所有入度为0的顶点入队。主要由以下两步循环执行,直到不存在入度为 0 的顶点为止选择一个入度为 0 的顶点,并将它输出; 删除图中从顶点连出的所有边。循环结束,若输出的顶点数不等于图中的顶点数+1,则表示该图存在回路,即无法拓扑排序,否则,输出的就是拓扑序列 (不唯一)代码:#include <cstring>#.原创 2021-08-29 19:09:38 · 137 阅读 · 0 评论 -
Acwing847图中点的层次-------bfs
地址:https://www.acwing.com/problem/content/849/描述:思路:代码:#include <cstring>#include <queue>#include <iostream>using namespace std;int n,m;//n个点和m条边const int N=1e5+10;int d[N];int h[N],e[N],ne[N],idx;queue<int> q..原创 2021-08-29 15:01:37 · 112 阅读 · 0 评论 -
Acwing846树的重心---------dfs(邻接表)
地址:https://www.acwing.com/problem/content/description/848/描述:思路:本题的本质是树的dfs, 每次dfs可以确定以u为重心的最大连通块的节点数,并且更新一下ans。也就是说,dfs并不直接返回答案,而是在每次更新中迭代一次答案。这样的套路会经常用到,在 树的dfs 题目中总结以u为根的子树个数可由dfs(j)不断递归得到特别注意:由于本题给出的图是无向图,假如首次遍历,不论取那个节点,它...原创 2021-08-29 10:55:50 · 216 阅读 · 1 评论 -
图的DFS和BFS-------(基于邻接表)以及拓扑排序
转载:https://blog.csdn.net/qq_39328436/article/details/106956963?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163012979216780271520735%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163012979216780271520原创 2021-08-28 20:57:16 · 714 阅读 · 0 评论 -
数组模拟单链表--------头、尾插法建立单链表
头插法:#include<iostream>using namespace std;typedef struct Node {//创建进程控制块 int data; struct Node *next;//指向下一个结点的指针}*LinkList;LinkList head, tail;//头插法创建单链表void head_create(){ head = new Node(); head->next = NULL; int n = 0; cout <原创 2021-08-02 14:51:13 · 518 阅读 · 0 评论 -
邻接表、邻接矩阵(考研)--------王道
代码:(理解了一遍)#define MaxVertexNum 100typedef char vertexType ;//顶点中存字符类型数据 /*边表节点*/typedef struct ArcNode{ int adjvex;//弧指向的顶点下标 struct ArcNode *next;//指向下一条弧的指针}ArcNode; /*顶点表节点*/typedef struct VNode { vertexType data;//顶点信息(char) ArcNode* ...原创 2021-08-27 23:13:08 · 675 阅读 · 0 评论