#include<stdio.h>
#include<stdlib.h>
#define max 20
char roud[max][max];
int length[max];
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc;
int weight;
}ArcNode;
typedef struct VNode{
char data;
ArcNode *firstarc;
}VNode,AdjList[max];
typedef struct{
AdjList vertices;
int vexnum,arcnum;
}ALGraph;
int LocateVex(ALGraph G,char v){
int i;
for(i=0;i<G.vexnum;i++){
if(G.vertices[i].data==v)
return i;
}
return -1;
}
void CreateList(ALGraph &G){//有向图邻接表
int i,j,k;
char v1,v2;
ArcNode *s,*p;
printf("输入有向图的顶点数:");
scanf("%d",&G.vexnum);
printf("输入有向图的边数:");
scanf("%d",&G.arcnum);
printf("输入顶点:\n");
for(i=0;i<G.vexnum;i++){
getchar();
scanf("%c",&G.vertices[i].data);
G.vertices[i].firstarc=NULL;
}
printf("输入路径:\n");
for(k=0;k<G.arcnum;k++){
getchar();
scanf("%c %c",&v1,&v2);
printf("%c-->%c\n",v1,v2);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
s=(ArcNode*)malloc(sizeof(ArcNode));
s->adjvex=j;
getchar();
printf("权值:");
scanf("%d",&s->weight);
s->nextarc=NULL;
p=G.vertices[i].firstarc;