图论
这篇文章介绍了几种数据结构中图的算法,最简单的图的搜索dfs和bfs,到高级图的各种算法,如最小生成树,最短路径,关键路径。
图的存储结构
typedef struct{
int arc[MAXVEX][MAXVEX];
int numVertexes,numEdges;
}MGraph;
最小生成树Prim算法
这个算法的思想是从任意的一个根节点开始开始,一直长大到覆盖图中所有的节点为止。这边电脑演示比较麻烦,于是手写演示。
void MiniSpanTree_Prim(MGraph G)
{
int min,i,j,k;
int adjvex[MAXVEX]; //保存相关顶点的下标
int lowcost[MAXVEX]; //保存顶点间的权值
lowcost[0] = 0;
adjvex[0] = 0;
for(i=0;i<G.numVertexes;i++)
{
lowcost[i] = G.arc[0][i]; //先将第一个顶点包含进去
adjvex[i] = 0;
}
for(i=1;i<G.numVertexes;i++)
{
min = INFINITY;
j = 1;k=0;
while(j<G.numEdges)
{
if(lowcost[j]!=0 && lowcost[j]<min) //选择当前最小权值的大小和下标
{
min = lowcost[j];