#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?這個程序還有一個警告 求好心人幫忙
是拷貝出錯了吧,好多錯誤。
主要錯誤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);//增加
}