|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#define VERTEX_MAX 26
#define MAXVALUE 32767
typedef struct
{
char Vertex[VERTEX_MAX];//保存顶点信息
int Edges[VERTEX_MAX][VERTEX_MAX];//保存边的权值
int isTrav[VERTEX_MAX];//遍历标志
int VertexNum;//顶点数量
int EdgeNum;//边的数量
int GraphType;
}MatrixGraph;
void CreateMatrixGraph(MatrixGraph *G)//创建邻接矩阵
{
int i,j,k,weight;
char start,end;
printf("输入各点信息\n");
for(i=0;i<G->VertexNum;i++)
{
getchar();
printf("第%d个顶点:",i+1);
scanf("%c",&(G->Vertex[i]));//保存到个顶点数组元素中
}
printf("输入构成各边的两个顶点及权值:\n");
for(k=0;k<G->EdgeNum;k++)
{
getchar();//暂停输入
printf("第%d条边",k+1);
scanf("%d,%d,%d",&start,&end,&weight);
for(i = 0;start != G->Vertex[i];i++)
for(j=0;end != G->Vertex[j];j++)
G->Edges[i][j] = weight;
if(G->GraphType == 0)
G->Edges[j][i] = weight;
}
}
void OutMatrix(MatrixGraph *G)
{
int i,j;
for(j=0;j<G->VertexNum;j++)
printf("\t%c",G->Vertex[j]);
printf("\n");
for(i=0;i<G->VertexNum;i++)
{
printf("%c",G->Vertex[i]);
for(j=0;j<G->VertexNum;j++)
{
if(G->Edges[i][j] == MAXVALUE)
printf("\t&&");
else
printf("\t%d",G->Edges[i][j]);
}
printf("\n");
}
}
int main()
{
MatrixGraph G;
int i,j;
printf("输出图的类型0代表无向图,1代表有向图");
scanf("%d",&G.GraphType);
printf("输入图的顶点数量和边的数量:");
scanf("%d,%d",&G.VertexNum,&G.EdgeNum);
for(i=0;i<G.VertexNum;i++)
for(j=0;j<G.VertexNum;j++)
G.Edges[i][j] = MAXVALUE;
CreateMatrixGraph(&G);
printf("输出数据");
OutMatrix(&G);
return 0;
} |
|