数据结构(prim算法)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(prim算法)相关的知识,希望对你有一定的参考价值。
如图示,以V1为起始点,上述算法在确定了V1,V32个节点之后,寻找最短路径。
ee数组(最小距离数组)中的值为0 6 0 5 无穷无穷
for(j = 0;j < G.vexnum;j++)循环中 将V3邻接到个点的距离与ee数组比较,在与V2点比较时将出发点改称V3, 可是 V1到V4的距离 < V3到V4的距离,接下去连接的边 应该是V1到V4的边啊。
不理解 求解释!!
补充
(I)类型定义
typedef char VexType; /*顶点数据类型*/
typedef int EdgeType;/*边数据类型*/
typedef struct
VexType vexs[VexNum];
EdgeTypearcs[VexNum][VexNum];
int vexnum,arcnum; /* 顶点数和边数 */
Mgraph; /* 图的邻接矩阵表示结构定义 */
typedef struct
int adjvex;/*集合U中的顶点(始点)*/
int value;/*集合u中顶点到非U中的某个顶点的最小距离值*/
InterEdge;
将v3加入U后,更新ee中的值应该是0 5 0 2 6 4;
怎么会出现你说的0 6 0 5 无穷无穷的情况呢?
for(j = 0;j < G.vexnum;j++)中不是有条件判断么,要在k到j的距离小于ee[j]的value值时才会更新ee[j]啊。 参考技术A 有点复杂啊~追问
可以的话帮忙看看 谢谢!
以上是关于数据结构(prim算法)的主要内容,如果未能解决你的问题,请参考以下文章
数据结构与算法系列----最小生成树(Prim算法&Kruskal算法)
最小生成树算法:Prim算法和Kruskal算法(来源:王道数据结构)
数据结构与算法系列----最小生成树(Prim算法&Kruskal算法)