qq_27994711 2015-12-16 14:54 采纳率: 40%
浏览 1336
已采纳

c程序改错 没有错误 可是没法运行 可以帮忙改一下嘛

#include
#define MAXVEX 100
#define INFINITY 65535
typedef int edgetype ;
typedef char vertextype;
typedef struct {
vertextype vexs[MAXVEX];
edgetype arc[MAXVEX][MAXVEX]; //邻接矩阵储存的结构
int numvertexes ,numedges;

}mgraph;

void createmgraph(mgraph *g)
{
int i,j,k,w;
printf("输入顶点数和边数:\n");
scanf("%d%d",&g->numvertexes,&g->numedges);
printf("输入顶点数和边数:\n");//读入顶点信息
for(i=0;inumvertexes;i++)

scanf("%c",g->vexs[i]);

for(i=0;i<g->numvertexes;i++)
    for (j=0;j<g->numvertexes;j++)                //初始化邻接矩阵
        g->arc[i][j]=INFINITY;

for(k=0;knumedges;j++)
{
printf("输入边(vi,vj)上的下标i,j,和权w\n");
scanf("%d%d%d",&i,&j,&w);
g->arc[i][j]=w;
g->arc[j][i]=w;
}
}

void main()
{
int i,j;
mgraph* g;
createmgraph(g);
printf("输出图的所的边\n");
for(i=0;inumedges;i++)
for(j=0;jnumedges;j++)
{
if(g->arc[i][j]!=0)
printf("图的边为(%d,%d),权值为%d",i,j,g->arc[i][j]);
}
}

还有定义的那个图g 它是一个指针变量 意思是指向定义的那个图的变量对吧 那么调用那个函数的时候 函数名后面括号里面需要写形参的类型嘛?形参是指针那我写*g 还是g?这个程序还有一个警告 求好心人帮忙

  • 写回答

1条回答 默认 最新

  • ysuwood 2015-12-16 15:48
    关注

    是拷贝出错了吧,好多错误。
    主要错误g没有初始化。修改如下:

     #include <stdio.h>
    #include<stdlib.h>
    
    #define MAXVEX 100
    #define INFINITY 65535
    typedef int edgetype ;
    typedef char vertextype;
    typedef struct {
        vertextype vexs[MAXVEX];
        edgetype arc[MAXVEX][MAXVEX]; //邻接矩阵储存的结构
        int numvertexes ,numedges;
    }mgraph;
    void createmgraph(mgraph *g)
    {
        int i,j,k,w;
        printf("输入顶点数和边数:\n");
        scanf("%d%d",&g->numvertexes,&g->numedges); 
        printf("输入顶点数和边数:\n");//读入顶点信息
        for(i=0;i<g->numvertexes;i++)//修改
    
            scanf("%c",g->vexs[i]);
        for(i=0;i<g->numvertexes;i++)//修改
            for (j=0;j<g->numvertexes;j++)                //初始化邻接矩阵
                g->arc[i][j]=INFINITY;
        for(k=0;k<g->numedges;j++)//修改
        {
            printf("输入边(vi,vj)上的下标i,j,和权w\n");
            scanf("%d%d%d",&i,&j,&w);
            g->arc[i][j]=w;
            g->arc[j][i]=w;
        }
    }
    void main()
    {
        int i,j;
        mgraph* g;
        g=(mgraph*)malloc(sizeof(mgraph));//增加初始化
        createmgraph(g);
        printf("输出图的所的边\n");
        for(i=0;i<g->numedges;i++)//修改
            for(j=0;j<g->numedges;j++)//修改
            {
                if(g->arc[i][j]!=0)
                    printf("图的边为(%d,%d),权值为%d",i,j,g->arc[i][j]);
            }
    
        if(g) free(g);//增加
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条