#include<stdio.h>
#include<stdlib.h>
#define Max 100
typedef struct Edge{
int adjPoint;
Edge *next;
}Edge,*EdgeP;
typedef struct Point{
char data;
EdgeP frist;
}Point;
typedef struct AdjList{
EdgeP p;
int n,e;
Point adjPoint[Max];
}AdjList;
void CreateAdjList(AdjList &L){
EdgeP p;
int i,j;
printf("请输入邻接表的顶点个数n和边的个数e:");
scanf("%d %d",&(L.n),&(L.e));
fflush(stdin);
for(i=0;i<L.n;i++){
getchar();
printf("请输入第%d的字符:",i);
scanf("%c",&(L.adjPoint[i].data));
L.adjPoint[i].frist=NULL;
}
printf("*******************************************\n");
printf("下面请输入每条边相邻的两个字符\n");
fflush(stdin);
for(j=0;j<L.e;j++){
getchar();
printf("请输入第%d条边相邻的字符:",j);
char a,b;
scanf("%c %c",&a,&b);
int k;
for(k=0;k<L.n;k++){
if(L.adjPoint[k].data==a)
break;
}
p=new Edge;
p->adjPoint=k;
int m;
for(m=0;m<L.n;m++){
if(L.adjPoint[m].data==b)
break;
}
p->next=L.adjPoint[m].frist;
L.adjPoint[m].frist=p;
p=new Edge;
p->adjPoint=m;
p->next=L.adjPoint[k].frist;
L.adjPoint[k].frist=p;
}
}
void display(AdjList L){
EdgeP p;
int i;
for(i=0;i<L.n;i++){
printf("%2d [%c]",i,L.adjPoint[i].data);
p=L.adjPoint[i].frist;
while(p!=NULL){
printf("-->[%d]",p->adjPoint);
p=p->next;
}
printf("\n");
}
}
void main(){
system("color 07");
AdjList L;
CreateAdjList(L);
display(L);
}