#include
#define INFINITY 1000
#define MAX_VERTEX_NUM 20
#define ERROR 0
#define OK 1
typedef enum{DG,DN,UDG,UDN} GraphKind;
typedef int VRType;
typedef int InfoType;
typedef char VertexTpye;
typedef int Status;
typedef struct ArcCell
{
VRType adj;//该弧的权值
InfoType *info;//该弧相关信息的指针
} ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct
{
char vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnum,arcnum;
GraphKind kind;
}MGraph;
PrintGraph(MGraph G)
{
int i,j;
for(i=0;i
{
for(j=0;j
{
if(G.arcs [i][j].adj!=0)
{
printf("%c--->%c %d/n",G.vexs[i],G.vexs[j],G.arcs[i][j]);
}
}
}
}
main()
{
MGraph G;
int i,j,k,w,IncInfo;
char v1,v2;
int LocateVertex(MGraph,VertexTpye);
printf("please Enter into the number of Vertex Arc and Arc_information:/n");
scanf_s("%d,%d,%d",&G.vexnum ,&G.arcnum,&IncInfo);
getchar();
printf("The Number of Vertex is %d,The Number of Arc is %d/n",G.vexnum ,G.arcnum );
for(i=0;i
{ printf("NO.%d Vertex is:",i);
//G.vexs[i]=getchar();
scanf_s("%c",&G.vexs[i]);
getchar();
}
for(i=0;i
{
printf("/nThe Vertex you Enter into is %c:",G.vexs[i]);
}
for(i=0;i
{
for(j=0;j
{
G.arcs [i][j].adj =NULL;//初始化弧的权值为0
//*(G.arcs [i][j].info) =INFINITY;//该弧无相关信息
}
}
for(k=0;k
{ printf("/n please Enter into NO.%d Arc:",k+1);
v1=getche();
printf("/t");
v2=getche();
printf("/t");
scanf_s("%d",&w);
printf("The value between %c and %c is %d/n",v1,v2,w);
i=LocateVertex(G,v1);
j=LocateVertex(G,v2);
G.arcs[i][j].adj =w;
if(IncInfo)
{
}
}
// G.arcs [j][i]=G.arcs [i][j];无向网与有向网的区别点
PrintGraph(G);
getchar();
getchar();
}
int LocateVertex(MGraph G,VertexTpye Vertex)
{
int j=ERROR,k;
for(k=0;k
{
if(G.vexs[k]==Vertex)
{
j=k;
break;
}
}
return(j);
}
上面是代码的实现,及运行结果,程序的运行效率有待提高,有修改意见的同志,请赐教!
****************************************************************
数据结构、C语言、算法学习中......
QQ:392604412
****************************************************************
2010-04-18