
数据结构
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 · 131 阅读 · 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 · 108 阅读 · 0 评论 -
SPFA算法邻接表实现
#include <cstdio>#include <vector>#include <algorithm>#include <queue>using namespace std;#define INF 0x7FFFFFFFtypedef struct{ int w, adj; }Arcnode;vector<vec...原创 2019-05-22 22:06:01 · 250 阅读 · 0 评论 -
求关键路径*CriticalPath
#include <cstdio>#include <algorithm>#include <vector>#include <stack>#define INF 0x7FFFFFFFusing namespace std;typedef struct Arcnode{ int w, adj, E, L; }Arcnode;...原创 2019-05-26 21:47:00 · 153 阅读 · 0 评论 -
Bellman-Ford算法 邻接表&邻接矩阵实现
邻接表#include <cstdio>#include <vector>using namespace std;#define INF 0x7FFFFFFFtypedef struct{ int w, adj; }Arcnode;vector<vector<Arcnode>> G;vector<int > P...原创 2019-05-21 22:51:15 · 834 阅读 · 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 · 110 阅读 · 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 · 137 阅读 · 0 评论 -
Prim算法 邻接矩阵&邻接表实现
邻接矩阵#include <cstdio>#include <algorithm>using namespace std;#define INF 0x7FFFFFFFint 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 · 1041 阅读 · 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 · 151 阅读 · 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 · 140 阅读 · 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 · 976 阅读 · 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 · 819 阅读 · 0 评论