算法模板
weixin_38902950
这个作者很懒,什么都没留下…
展开
-
最小生成树问题(prim和kruskal算法)
private static void prim(int[][] G) { // TODO Auto-generated method stub int N = G.length; int parent[] = new int[N]; int dist[] = new int[N]; for (int i = 1; i < N; i++) { dist[i] ...原创 2019-02-21 22:11:57 · 692 阅读 · 0 评论 -
Dijkstra和Floyd算法
/* 邻接矩阵存储 - 有权图的单源最短路算法 */ Vertex FindMinDist( MGraph Graph, int dist[], int collected[] ){ /* 返回未被收录顶点中dist最小者 */ Vertex MinV, V; int MinDist = INFINITY; for (V=0; V<Graph->Nv...原创 2019-02-19 15:23:52 · 317 阅读 · 0 评论 -
图的DFS和BFS
/* 邻接表存储的图 - DFS */ void Visit( Vertex V ){ printf("正在访问顶点%d\n", V);} /* Visited[]为全局变量,已经初始化为false */void DFS( LGraph Graph, Vertex V, void (*Visit)(Vertex) ){ /* 以V为出发点对邻接表存储的图Graph进行...原创 2019-02-19 12:25:33 · 215 阅读 · 0 评论 -
并查集
#define MAXN 1000 /* 集合最大元素个数 */typedef int ElementType; /* 默认元素可以用非负整数表示 */typedef int SetName; /* 默认用根结点的下标作为集合名称 */typedef ElementType SetType[MAXN]; /*...原创 2019-02-18 14:54:15 · 69 阅读 · 0 评论 -
哈夫曼树的建立
哈夫曼树的定义:带权路径长度(WPL)最小的二叉树哈夫曼编码:总的字符编码长度最短,所有字符均在叶子节点,可以防止前缀编码的二义性。class TreeNode{int weight;TreeNode left,right;}TreeNode Huffman(Minheap H){ buildMinHeap(H); for(int i=1;i<H.size...原创 2019-02-18 14:53:06 · 162 阅读 · 0 评论 -
堆的插入、删除和建立
typedef struct HNode *Heap; /* 堆的类型定义 */struct HNode { ElementType *Data; /* 存储元素的数组 */ int Size; /* 堆中当前元素个数 */ int Capacity; /* 堆的最大容量 */};typedef Heap MaxHeap; /* 最大堆 ...原创 2019-02-18 12:40:51 · 123 阅读 · 0 评论 -
二叉树的四种遍历
void InorderTraversal( BinTree BT ){ if( BT ) { InorderTraversal( BT->Left ); /* 此处假设对BT结点的访问就是打印数据 */ printf("%d ", BT->Data); /* 假设数据为整型 */ InorderTravers...原创 2019-02-17 11:42:55 · 302 阅读 · 0 评论 -
平衡二叉树(AVL树)的建立
typedef struct AVLNode *Position;typedef Position AVLTree; /* AVL树类型 */struct AVLNode{ ElementType Data; /* 结点数据 */ AVLTree Left; /* 指向左子树 */ AVLTree Right; /* 指向右子树 */ int H...原创 2019-02-17 11:05:51 · 116 阅读 · 0 评论 -
拓扑排序(AOV)
/* 邻接表存储 - 拓扑排序算法 */ bool TopSort( LGraph Graph, Vertex TopOrder[] ){ /* 对Graph进行拓扑排序, TopOrder[]顺序存储排序后的顶点下标 */ int Indegree[MaxVertexNum], cnt; Vertex V; PtrToAdjVNode W; Que...原创 2019-02-22 13:31:53 · 227 阅读 · 0 评论 -
二叉搜索树的插入删除
BinTree Insert( BinTree BST, ElementType X ){ if( !BST ){ /* 若原树为空,生成并返回一个结点的二叉搜索树 */ BST = (BinTree)malloc(sizeof(struct TNode)); BST->Data = X; BST->Left = BST-&g...原创 2019-02-16 21:37:45 · 103 阅读 · 0 评论 -
二叉树的非递归前序,中序,和后序遍历
前序:void inorderTraversal(BinTree BT){ BinTree T BT; Stack S = CreatStack(MaxSize); while(T||isEmpty(S){ while(T) { push(S,T); printf("%d",T->Data);...原创 2019-03-01 21:48:34 · 98 阅读 · 0 评论