
数据结构
文章平均质量分 75
junaszxaz1
这个作者很懒,什么都没留下…
展开
-
深度优先遍历
深度优先遍历(Depth-First Search)<br />类似于对树的先序遍历<br /><br /> <br /> <br />遍历规则:首先访问初始点vi ,并将其标记为已访问过,然后从vi 的任一未被访问过的邻接点(有向图的入边邻接点除外,下同)w出发进行深度优先遍历,当vi的所有邻接点均被访问过时,则回退到已被访问的顶点序列中最后一个拥有未被访问的邻接点的顶点vk,从vk的未被访问过的邻接点出发进行深度优先遍历,直到回退到初始点并且没有未被访问的邻接点未知。<br /><br /> <br /转载 2011-05-01 11:18:00 · 1748 阅读 · 0 评论 -
广度优先遍历
<br /> <br />广度优先遍历(Breadth-First Search)<br /><br />类似于对树的层序遍历<br /> <br />遍历规则为:首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点,其访问次序可以任意,假定依次为vi1,vi2,...,vit,并均标记为已访问过,然后在按照vi1,vi2,...,vit的次序,访问每一个顶点的所有未被访问过的邻接点(次序任意),并均标记为已访问过,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。转载 2011-05-01 13:11:00 · 1182 阅读 · 1 评论 -
最小生成树-Prim
<br />Prim算法思想<br /> <br />假设G=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树,其中,U是T的顶点集,TE是T的边集。Prim算法的基本思想是:令集合U的初值为U={v0}(v0是从V的任取的一个顶点,也就是说构造最小生成树时从v0开始),集合TE的初值为TE={}。然后只要U是V的真子集(即U∈V),就从哪些其一个端点已在T中,另一个端点仍在T外的所有边中,找一条最短(即权值最小)边,假定为(vi,vj),其中vi∈U,vj∈(V-U),并把该边(vi转载 2011-05-04 16:51:00 · 1006 阅读 · 0 评论 -
最小生成树-Kruskal
Kruskal算法思想不同于Prim算法,Kruskal算法是一种按照连通网中边的权值的递增顺序构造最小生成树的算法。假设G=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树。Kruskal算法的基本思想是:令集合U的初值为U=V,即包含有G中全部顶点,集合TE的初值为TE={}。然后,将图G中的边按权值从小到大的顺序依次选取,若选取的边使生成树T不形成回路,则把它并入TE中,保留作为T的一条边;若选取的边使生成树T形成回路,则将其舍弃,如此进行下去,直到TE中包含有n-1条边为止,此转载 2011-05-04 17:19:00 · 695 阅读 · 0 评论 -
最短路径-Dijkstra
void Dijkstra( MGraph G, int i, int path[], VRType dist[] ){ //用Dijkstra算法求有向网G从源点vi到其余顶点vj的最短路径path[j]及 //带权路径长度 dist[j] int j,k,m; VRType min; bool s[MAX_VERTEX_NUM]; //s[i]为true时,已经求得从vi到vj的最短路径 f转载 2011-05-02 15:12:00 · 462 阅读 · 0 评论 -
每对顶点之间的最短路径-Floyd
void Floyd( MGraph G, int path[][MAX_VERTEX_NUM], VRType dist[][MAX_VERTEX_NUM] ){ //用Floyd算法求有向网G中每对顶点之间的最短路径path[i][j]及 //带权路径长度dist[i][j],dist[i][j]存放顶点vi到vj的最短距离, //path[i][j]保存从源点vi到终点vj的最短路径中的源点vi的下一个顶点的序号 int i,j,k; for( i=0; j转载 2011-05-03 12:51:00 · 962 阅读 · 0 评论 -
构造HuffmanTree
<br />Huffman算法思想:<br />(1)根据给定的n个权值{w1,w2,...wn}构成n课二叉树的森林F={T1,T2,...,Tn},其中每课二叉树Ti中只有一个带权为wi的根结点,且其左右子树为空。<br />(2)在森林F中选取两课根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左,右子树上根结点的权值之和。<br />(3)在F中删除作为新二叉树左,右子树的两课二叉树,同时将新得到的二叉树加入森林F中。<br />(4)重复(2)和(3),直到F中转载 2011-05-05 13:18:00 · 1505 阅读 · 0 评论 -
Huffman编码
<br />typedef struct { int weight; //结点的权值 char bit[MAXBIT]; //存放编码序号的数组 int start; //编码的起始下标}HTCode,*HuffmanCode; //动态分配数组存储Huffman编码void HuffmanCoding( HuffmanTree &HT, HuffmanCode &HC, int n ){ //求n个字符(叶子结点)的Huffman编码HC int i,j;原创 2011-05-05 13:51:00 · 478 阅读 · 0 评论