图论--Prim算法---邻接矩阵实现

本文介绍了使用C语言实现Prim算法来寻找图的最小生成树。通过邻接矩阵表示图,给出了具体的代码实现,并通过两个实例展示了算法的运行过程,包括输入顶点和边的信息,以及最终的最小生成树的权重和路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Prim算法---邻接矩阵实现

                         求最小生成树。

C语言实现:

 

代码实现:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_LEN 20
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INTMAX 0xFFFF

typedef char type[20];
int visit[MAX_LEN];
int TreeSum = 0;    ///-------树的权值
int PrimTree[MAX_LEN];///-----树的边

typedef struct MGraph{///-----图
    int      vexnum;//---顶点数
    int      arcnum;//---弧数
    int      dist[MAX_LEN];//---边的最小权重
    type     vexs[MAX_LEN];//---顶点信息
    int      weight[MAX_LEN][MAX_LEN];//-----权重
}MGraph;

typedef struct Queue{///-----广度优先遍历----队列--------
    int      front;
    int      rear;
    int      data[MAX_LEN+1];
}Queue;

void CreateGraph( MGraph * g )///--------------建立无向图-----------------------
{
    int i , j , k , weight;
    type v1 , v2 ;
    printf("请输入顶点数,边数:\n");
    scanf("%d %d",&g->vexnum , &g->arcnum );

    printf("\n请输入%d定点信息:\n",g->vexnum);
    for( i = 0 ; i < g->vexnum ; i++)
        scanf("%s",g->vexs[i]);
    for( i = 0 ; i < g->vexnum ; i++)
        for( j = 0 ; j < g->vexnum ; j++)
            g->weight[i][j] = INTMAX;
    printf("\n请输入%d条弧的 两两关系 及 权重 :\n",g->arcnum);
    for( k = 0 ; k < g->arcnum ;  k++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值