c语言:最小生成树之Prim算法
来源:互联网 发布:阿里云linux服务器搭建 编辑:程序博客网 时间:2024/06/05 01:14
#include <stdio.h>#include <stdlib.h>#define MaxNum 10000typedef struct{ int fromvex, tovex; int weight;} Edge;typedef Edge *EdgeNode;int n;int arcnum;void CreatMatrix(int GA[n+1][n+1]){ int i, j, k, e; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { if(i==j) { GA[i][j]=0; } else { GA[i][j]=MaxNum; } } } printf("请输入边的信息,按照起点,终点,权值的形式输入:\n"); for(k=1; k<=arcnum; k++) { scanf("%d,%d,%d",&i,&j,&e); GA[i][j]=e; GA[j][i]=e; }}void InitEdge(EdgeNode GE,int m){ int i; for(i=1; i<=m; i++) { GE[i].weight=0; }}void GetEdgeSet(int GA[n+1][n+1],EdgeNode GE){ int i, j, k = 1; for(i=1; i<=n; i++) { for(j=i+1; j<=n; j++) { if(GA[i][j] !=0 && GA[i][j] != MaxNum) { GE[k].fromvex = i; GE[k].tovex = j; GE[k].weight = GA[i][j]; k++; } } }}void SortEdge(EdgeNode GE,int m){ int i,j,k; Edge temp; for(i=1; i<m; i++) { k=i; for(j=i+1; j<=m; j++) { if(GE[k].weight > GE[j].weight) { k=j; } } if(k!=i) { temp = GE[i]; GE[i]=GE[k]; GE[k]=temp; } }}void Prim(int GA[n+1][n+1],EdgeNode T){ int i,j,k,min,u,m,w; Edge temp; k=1; for(i=1; i<=n; i++) { if(i!=1) { T[k].fromvex=1; T[k].tovex=i; T[k].weight=GA[1][i]; k++; } } for(k=1; k<n; k++) { min=MaxNum; m=k; for(j=k; j<n; j++) { if(T[j].weight<min) { min=T[j].weight; m=j; } } temp=T[k]; T[k]=T[m]; T[m]=temp; j=T[k].tovex; for(i=k+1; i<n; i++) { u=T[i].tovex; w=GA[j][u]; if(w<T[i].weight) { T[i].weight=w; T[i].fromvex=j; } } }}void OutEdge(EdgeNode GE,int e){ int i; printf("按照起点,终点,权值的形式输出的最小生成树为:\n"); for(i=1; i<=e; i++) { printf("%d,%d,%d\n",GE[i].fromvex,GE[i].tovex,GE[i].weight); }}int main(){ printf("请输入顶点的个数:"); scanf("%d",&n); printf("请输入边的个数:"); scanf("%d", &arcnum); int GA[n+1][n+1]; Edge GE[n*(n-1)/2], T[n]; CreatMatrix(GA); InitEdge(GE,arcnum); GetEdgeSet(GA,GE); SortEdge(GE,arcnum); Prim(GA,T); printf("\n"); OutEdge(T,n-1); system("pause"); return 0;}
阅读全文
0 0
- c语言:最小生成树之Prim算法
- 最小生成树Prim算法C语言
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
- 最小生成树Prim算法朴素版 C语言实现
- 最小生成树Prim算法朴素版 C语言实现
- 最小生成树--prim算法的c语言描述
- C语言最小生成树prim算法(USACO3.1)
- C语言-数据结构-prim算法求最小生成树
- C语言实现图的Prim最小生成树算法
- C语言——Prim算法实现最小生成树
- 最小生成树Prim算法朴素版 C语言实现
- 数据结构(C实现)------- 最小生成树之Prim算法
- 最小生成树算法之Prim算法
- 最小生成树算法之Prim算法
- 最小生成树算法之prim算法
- Prim最小生成树算法(C++)
- 最小生成树之Prim算法
- 最小生成树算法之prim
- python中strip\lstrip\rstrip的使用方法(字符串处理)
- python交互界面的退出
- eclipse中文注释乱码问题&sourceinsight排版
- 从尾到头打印链表
- 高性能网关设备及服务实践(dpdk)--服务器架构研究
- c语言:最小生成树之Prim算法
- 【拜小白opencv】41-形态学滤波6——顶帽运算(OR礼帽运算、高帽运算)
- 基于XV6操作系统实验平台建设和哈工大操作系统实验 的搭建实验环境
- 摘要质量评价
- 磁条导航全向机器人设计方案
- java新特性—foreach,可变参数
- RSA加解密,加签以及验签。
- Python学习笔记:面向对象基础
- 图像处理中的forward warping 和 inverse warping