![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Siumai
此人不懒,但什么都不想写
展开
-
PAT A 1066 Root of AVL Tree (25分) *AVL树的构造
一、AVL构造思路 1、定义 (1)平衡因子:结点的平衡因子为其左子树的高度减去右子树的高度。 (2)AVL树:AVL树是所有结点平衡因子绝对值不超过1的BST(二叉查找树)。 因此首先定义AVL树的数据结构: typedef struct node { int data, factor; //factor即平衡因子; struct node *lchild, *rchild; }...原创 2020-01-16 11:14:09 · 105 阅读 · 0 评论 -
PAT A 1007 Maximum Subsequence Sum (25 分)(待补充)
#include <cstdio> typedef struct { int from, val; }dp; int main() { int N; scanf("%d", &N); int A[N], max = N - 1; dp DP[N]; for( int i = 0; i < N; ++i ) ...原创 2019-07-18 22:12:15 · 81 阅读 · 0 评论 -
SPFA算法邻接表实现
#include <cstdio> #include <vector> #include <algorithm> #include <queue> using namespace std; #define INF 0x7FFFFFFF typedef struct { int w, adj; }Arcnode; vector<vec...原创 2019-05-22 22:06:01 · 217 阅读 · 0 评论 -
求关键路径*CriticalPath
#include <cstdio> #include <algorithm> #include <vector> #include <stack> #define INF 0x7FFFFFFF using namespace std; typedef struct Arcnode { int w, adj, E, L; }Arcnode; ...原创 2019-05-26 21:47:00 · 120 阅读 · 0 评论 -
Bellman-Ford算法 邻接表&邻接矩阵实现
邻接表 #include <cstdio> #include <vector> using namespace std; #define INF 0x7FFFFFFF typedef struct { int w, adj; }Arcnode; vector<vector<Arcnode>> G; vector<int > P...原创 2019-05-21 22:51:15 · 761 阅读 · 0 评论 -
TopologialSort拓扑排序
#include <cstdio> #include <vector> #include <stack> #include <algorithm> using namespace std; vector<vector<int>> G; vector<int> Indegree, Ans; int Topologic...原创 2019-05-24 22:15:28 · 80 阅读 · 0 评论 -
Kruskal算法
#include <cstdio> #include <algorithm> using namespace std; typedef struct { int a, b, w; } Edgenode; vector<Edgenode> E; vector<int> UFS; int Find( int a ) { while( ...原创 2019-05-24 21:34:32 · 102 阅读 · 0 评论 -
Prim算法 邻接矩阵&邻接表实现
邻接矩阵 #include <cstdio> #include <algorithm> using namespace std; #define INF 0x7FFFFFFF int G[500][500], visited[500], W[500]; int Prim( int N ) { int sumW = 0, v; for( int i = 0; ...原创 2019-05-24 21:16:28 · 991 阅读 · 0 评论 -
堆的排序、插入
#include <cstdio> #include <algorithm> using namespace std; /* 堆的关系 前提:根下标为0, 共N个元素; i的左孩子:2i + 1; i的右孩子:2i + 2; i的父亲:( i - 1 ) / 2; 最后一个非叶节点 ( N - 2 ) / 2, 即末尾结点的父亲; */ void AdjustDown( i...原创 2019-05-10 22:57:11 · 118 阅读 · 0 评论 -
并查集
#include <cstdio> int UFS[1000] = {0}; void Initiate( int N ) { for( int i = 0; i < N; ++i ) UFS[i] = i; } int Find( int k ) { while( UFS[k] != k ) k = UFS[k]; ret...原创 2019-05-10 21:54:01 · 116 阅读 · 0 评论 -
二叉平衡树(AVL)的插入、调整与顺序输出
#include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; typedef struct AvlNode { int data, height; struct AvlNode *lchild, *rchild; }AvlNode, *AvlTree;...原创 2019-05-10 21:39:19 · 909 阅读 · 0 评论 -
二叉排序树的插入、查找、删除与顺序输出
注:备战2020ing…暂时没时间注解啦,大家凑合先看下代码叭,肥宅对不住了。 #include <cstdio> #include <cstdlib> typedef struct BstNode { int data; struct BstNode *lchild, *rchild; }BstNode, *Bstree; BstNode *Getpri...原创 2019-05-06 22:43:35 · 790 阅读 · 0 评论