主题:关于数据结构,新人求教问题!
om20008
[专家分:0] 发布于 2008-11-12 09:10:00
已知无向图G描述如下:
G=(V,E)
V={V1,V2,V3,V4,V5}
E={(V1,V2),(V1,V4),(V2,V4),(V3,V4),(V2,V5),(V3,V4),(V3,V5)}
(1)画出G的图示;
(2)然后给出G的邻接矩阵和邻接表;
(3)写出每个顶点的度。
回复列表 (共2个回复)
沙发
tianyi1988 [专家分:20] 发布于 2008-11-16 21:14:00
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/* 领接矩阵的头文件 */
#define FINITY 5000 /* 代表无穷大 */
#define m 20 /*最大的顶点数 */
typedef char vertextype ; /*顶点值类型 */
typedef int edgetype; /* 权值类型 */
typedef struct
{
vertextype vexs[m]; /*顶点值信息 */
edgetype edges[m][m]; /*邻接矩阵 */
int n,e; /*顶点总数与边数 */
}mgraph; /*邻接矩阵表示的图类型 */
/*图的有向网络邻接矩阵创建的算法 */
void creatmgraph(mgraph *g)
{
int i,j,k,w;
printf("Please input the n and e:\n");
scanf("%d%d",&g->n,&g->e); /* 输入图的顶点数与边数 */
getchar();
printf("Please input vexs:\n");
for(i=0;i<g->n;i++) /* 输入图的顶点值 */
{
g->vexs[i]=getchar();
}
for(i=0;i<g->n;i++) /*对邻接矩阵进行初始化 */
for(j=0;j<g->n;j++)
if(i==j) g->edges[i][j]=0;
else
g->edges[i][j]=FINITY;
printf("Please input the edges:\n");
for(k=0;k<g->e;k++)
{
scanf("%d%d%d",&i,&j,&w);
g->edges[i][j]=w;
}
}
/* 对邻接矩阵打印*/
void print(mgraph *g)
{
int i,j;
for(i=0;i<g->n;i++)
{
printf("%c",g->vexs[i]);
}
printf("\n");
for(i=0;i<g->n;i++)
{
for(j=0;j<g->n;j++)
printf("%8d",g->edges[i][j]);
printf("\n");
}
}
/*图的有向网络邻接矩阵创建的算法 */
void creatmgraph1(mgraph *g,char s[])
{
int i,j,k,w;
FILE *fp;
fp=fopen(s,"r");
fscanf(fp,"%d%d",&g->n,&g->e); /* 输入图的顶点数与边数 */
for(i=0;i<g->n;i++) /* 输入图的顶点值 */
{
fscanf(fp,"%c",&g->vexs[i]);
}
for(i=0;i<g->n;i++) /*对邻接矩阵进行初始化 */
for(j=0;j<g->n;j++)
if(i==j) g->edges[i][j]=0;
else
g->edges[i][j]=FINITY;
for(k=0;k<g->e;k++)
{
fscanf(fp,"%d%d%d",&i,&j,&w);
g->edges[i][j]=w;
}
fclose(fp);
}
/* 对邻接矩阵打印*/
void print1(mgraph *g,char s[])
{
int i,j;
FILE *fp;
fp=fopen(s,"w");
for(i=0;i<g->n;i++)
{
printf("%c",g->vexs[i]);
fprintf(fp,"%c",g->vexs[i]);
}
printf("\n");
fprintf(fp,"\n");
for(i=0;i<g->n;i++)
{
for(j=0;j<g->n;j++)
{
printf("%8d",g->edges[i][j]);
fprintf(fp,"%8d",g->edges[i][j]);
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
}
void main()
{
mgraph g;
creatmgraph1(&g,"mgraph.txt");
print1(&g,"wmgraph.txt");
} 这个可以输出矩阵,呵呵
板凳
RedOC [专家分:110] 发布于 2008-11-17 04:34:00
楼上的朋友,这种题还是不要回答的好
这一看就是来求作业的,你这样热心会害了他的
让他发段代码出来,帮忙Debug我还是愿意的
我来回复