数据结构
文章平均质量分 63
珝羽
这个作者很懒,什么都没留下…
展开
-
图的最短路径
1.Dijkstra从点v0开始,不断把距V0距离最小的点拉进超点(注意:权重值一定要是正的)void dijkstra(int G[N][N],int v0,int path[],int s[]){ int dist[N]; for(int i=0;i<N;i++){ dist[i]=G[v0][i]; if(dist[i]<INT_MAX) path[i]=v0;//记...原创 2018-06-20 18:25:52 · 171 阅读 · 0 评论 -
最小生成树
1.Prime算法(稠密矩阵;邻接矩阵)从点0开始不断拉相邻权重最小且不构成回路的点进来(形成一个超点)void prime(int G[N][N]){ Edge edges[N]; for(int i=0;i<N;i++){ edges[i].vex = 0;//表示"0"到各个节点 edges[i].cost = G[0][i];//距离 } edges[0].cos...原创 2018-06-20 17:16:48 · 153 阅读 · 0 评论 -
图的遍历
这是一个以邻接表为基础的遍历......1.递归DFS:int main(){ TGraph* G = (TGraph*)malloc(sizeof(TGraph)); graph_init(G);//稍微初始化一下我们的图 int visited[N];for(int i=0;i<N;i++) visited[i]=0; for(int i=0;i<N;i++){ if(...原创 2018-06-20 16:41:15 · 133 阅读 · 0 评论 -
图的储存结构
1.邻接矩阵(n个结点,构造n*n的矩阵,各点值可达为1,不可达为0)当我们需要将权重赋在矩阵上时,各点值若可达,则为其权重;不可达则为∞(INT_MAX);对角元为0(注:INT_MAX在C/C++再加任何一个正数都会导致溢出,下面给出简单的注意事项)最轻微的上溢INT_MAX + 1INT_MIN最严重的上溢INT_MAX + INT_MAX-2最轻微的下溢INT_MIN - 1INT_M...原创 2018-06-20 13:32:53 · 179 阅读 · 0 评论 -
折半
#include <stdio.h> #include<stdlib.h>#include<time.h> void quick_sort(int a[],int low,int high);int find_pos(int a[],int low,int high);int* find(int a[],int n,int x); i...原创 2018-06-18 17:23:50 · 138 阅读 · 0 评论 -
排序
快排(nlogn):将列表以首元(a[0])为判断依据隔成两部分,第一部分全部小于首元,第二部分全部大于等于首元。(复杂度n)重复上述过程至所有元素(次数为logn)void quick_sort(int a[],int low,int high);int find_pos(int a[],int low,int high);希尔(nlogn):将列表以不同的步长进行划分,常...原创 2018-06-18 19:06:12 · 165 阅读 · 0 评论 -
Huffman编码
1.概念:哈夫曼树也称为最优二叉树,是一种带权路径长度最短的二叉树。(树的带权路径长度:树中所有的叶结点的权值乘上其到根结点的路径长度,然后进行加和的结果)哈夫曼树中根结点为第0层,N个权值构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为其层数。树的路径长度是从树根到每一结点的路径长度之和,记为WPL 易证哈夫曼树的WPL是最小的。2.原理:编码表是通过对源符号出现的概率进行评估的方式得到,...原创 2018-06-26 00:03:54 · 146 阅读 · 0 评论 -
二叉树
二叉树的编程我觉着可以帮助你学习递归 : )#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct node{ ElemType data; struct node* lc; struct node* rc; int visit;//真的,如果不是这样写最方便,我也不想...原创 2018-06-25 23:29:31 · 83 阅读 · 0 评论 -
平衡二叉树
平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法):它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。1.引入:在说平衡二叉树之前,我们先需要谈谈二叉排序树,详见我之前在《排序》中所写。当排序树构建出来过于“畸形”,两边不对称,极端一点就是一路下来毫无分叉,那么显然,它的时间复杂度就是...原创 2018-06-23 19:13:33 · 124 阅读 · 0 评论 -
KMP
KMP匹配#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char *pch; int len; }Tstr; int* KMP(Tstr* T,Tstr* P,int *next){ int i=0,j=0,k=0,m = T->len,n =...原创 2018-06-27 22:25:36 · 119 阅读 · 0 评论