数据结构基础
蛋淡的忧伤
小xuo生
展开
-
堆、栈和堆栈
前言 一直不了解栈和堆栈的区别,网上搜索一般都是说栈和堆栈是同一个东西。直到前段时间在学习计算机组成原理时,终于了解了堆栈是个什么东西。 一、堆 堆是一种我们都很熟悉的数据结构,它可以被看作是完全二叉树。并且满足,对于任意节点如果它有左、右子树,该节点的值必定大于(大顶堆是大于,小顶堆是小于)子树上的节点的值。堆排序就是借助了堆这一数据结构。 二、栈 栈也是一种常见的数据结构,它符合“先进后出”的原则。可以使用顺序和链式两种实现方式来实现。 三、堆栈 与堆和栈不...原创 2021-04-11 14:23:13 · 4641 阅读 · 5 评论 -
单源最短路径Dijkstra算法
Dijkstra算法模板,邻接表实现,邻接表是数组模拟实现的 Dijkstra适用于有向图、无向图。 图中不能有负权值,有负权则用SPFA算法 #include<cstdio> #include<cstring> const int N=1000; const int M=10000; struct edge//边结构体 { int v,w,next;//边指...原创 2019-06-28 18:00:01 · 387 阅读 · 0 评论 -
单源最短路径算法SPFA
适用于带负权的最短路径算法 ,不带负权值则一般用Dijkstra算法 算法步骤: 将所有顶点标记为未访问,源点标记为已访问,并加入队列。 将所有点到源点的距离初始化为一个很大的数,源点到源点本身的距离初始化为0 只要队列不空,取队列中的队头顶点,将该顶点点标记为未访问。如果该顶点U到它所连接顶点U(可能不止一个)距离加上边的距离小于源点到顶点U的距离,则将此距离更新为源点到顶点U的距离加上...原创 2019-06-29 19:48:20 · 262 阅读 · 0 评论 -
SPFA判断图中是否有负环
使用SPFA算法判断图中首有负环。 SPFA算法保证每个顶点至多入队列n次(n为顶点总数)更新出到所有点的最短距离 如果某个点入队列次数大于n次表示图中有负环 #include<cstdio> #include<queue> #include<cstring> using namespace std; const int N=1000; const i...原创 2019-06-30 16:22:33 · 543 阅读 · 0 评论