#define MaxVertexNum 100 /* 最大顶点数设为100 */
#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/
typedef char VertexType;
typedef int EdgeType;
enum GraphType { DG, UG, DN, UN };
typedef struct {
VertexType Vertices[ MaxVertexNum ];
EdgeType Edges[ MaxVertexNum ][ MaxVertexNum ];
int n, e;
enum GraphType GType;
} MGraph;
void CreateMGraph ( MGraph *G )
{
int i, j, k, w;
G-> GType = UN;
printf( "请输入顶点数和边数(输入格式为:顶点数, 边数):\n" );
scanf( "%d, %d",&(G->n), &(G->e) );
printf("请输入顶点信息(输入格式为:顶点号<CR>):\n");
for ( i = 0; i < G->n; i++ )
scanf( "%c",&(G-> Vertices[i]) );
for ( i = 0; i < G->n; i++ )
for ( j = 0; j < G->n; j++ )
G->Edges[i][j] = INFINITY;
printf( "请输入每条边对应的两个顶点的序号和权值,输入格式为:i, j, w:\n" );
for ( k = 0; k < G->e; k++ ) {
scanf("%d,%d,%d ",&i, &j, &w);
G->Edges[i][j] = w;
G->Edges[j][i] = w;
}
}
#define MaxVertexNum 100 /* 最大顶点数为100 */
enum GraphType { DG, UG, DN, UN };
typedef struct node{
int AdjV;
struct node *Next;
} EdgeNode;
typedef char VertexType;
typedef struct Vnode{
VertexType Vertex;
EdgeNode *FirstEdge;
} VertexNode;
typedef VertexNode AdjList[ MaxVertexNum ];
typedef struct{
AdjList adjlist;
int n, e;
enum GraphType GType;
} ALGraph;
void CreateALGraph( ALGraph *G )
{
int i, j, k;
EdgeNode *edge;
G-> GType = DG;
printf( "请输入顶点数和边数(输入格式为:顶点数,边数):\n" );
scanf( "%d,%d", &(G->n), &(G->e) );
printf( "请输入顶点信息(输入格式为:顶点号<CR>):\n" );
for ( i=0; i < G->n; i++ ) {
scanf( " %c", &(G->adjlist[i].Vertex) );
G->adjlist[i].FirstEdge = NULL;
}
printf( "请输入边的信息(输入格式为: i, j <CR>):\n" );
for ( k=0; k < G->e; k++ ){
scanf( "\n%d,%d", &i, &j);
edge = (EdgeNode*)malloc(sizeof(EdgeNode));
edge->AdjV = j;
edge->Next = G->adjlist[i].FirstEdge;
G->adjlist[i].FirstEdge = edge;
}
}