图论 邻接矩阵

来源:互联网 发布:ubuntu命令行支持中文 编辑:程序博客网 时间:2024/06/05 20:06
//测试数据 5 5 0/*1 21 33 42 42 5*///输出:/*A 0 1 1 0 0 B 1 0 0 1 1 C 1 0 0 1 0 D 0 1 1 0 0 E 0 1 0 0 0*/#include<stdio.h>#include<string.h>#define MAX 10//定义邻接矩阵的结构体typedef struct{    int vexnum,arcnum,kind;    char vex[MAX];    int  arc[MAX][MAX];}AdjMatrix;//创建邻接矩阵void CreAdjMatrix(AdjMatrix *G){    int i,j,k;    printf("Input vexnum,arcnum and kind:");    scanf("%d%d%d",&G->vexnum,&G->arcnum,&G->kind);    for(k=0;k<G->vexnum;k++)        G->vex[k]='A'+k;    memset(G->arc,0,sizeof(G->arc));    for(k=0;k<G->arcnum;k++)    {        scanf("%d%d",&i,&j);        G->arc[i-1][j-1]=1;        if(!G->kind) G->arc[j-1][i-1]=1;    }}//输出邻接矩阵void listAdjMatrix(AdjMatrix *G){    for(int i=0;i<G->vexnum;i++)    {        printf("%c\n",G->vex[i]);        for(int j=0;j<G->vexnum;j++)            printf("%2d",G->arc[i][j]);        printf("\n");    }}int main(){    AdjMatrix *G;    CreAdjMatrix(G);    listAdjMatrix(G);    return 0;}

在主程序的第二行加入G=(AdjMatrix *)malloc(sizeof(AdjMatrix));

如果不加,在vc上可能会内存崩溃

0 0
原创粉丝点击