#include<iostream.h>
#define max 20
typedef struct arcnode{
int tailvex,headvex;//该弧的尾和头顶点的位置
arcnode *hlink,*tlink;//分别为弧头相同和弧尾相同的弧的链域
}arcnode;
typedef struct{
char data;
arcnode *firstin,*firstout;//分别指向该顶点第一条入弧和出弧
}vexnode;
typedef struct{
vexnode xlist[max];//表头向量
int vexnum,arcnum;//有向图的当前顶点数和弧数
}OLgraph;
int LocateX(OLgraph &G,char x){//定位
for(int i=0;i<G.vexnum;i++)
if(x==G.xlist[i].data) return i;
return -1;
}
void CreateG(OLgraph &G,int n,int m){
int i,j,k,h,t;
char u,v;
arcnode *p;
for(i=0;i<n;i++){
cin>>G.xlist[i].data;
G.xlist[i].firstin=NULL;
G.xlist[i].firstout=NULL;
}
for(j=0;j<m;j++){
cin>>u>>v;
p=new arcnode;
h=LocateX(G,u);
t=LocateX(G,v);
p->tailvex=h;
p->headvex=t;
p->tlink=G.xlist[h].firstout;
p->hlink=G.xlist[t].firstin;
G.xlist[h].firstout=p;
G.xlist[t].firstin=p;
}
G.vexnum=n;
G.arcnum=m;
}
int outdegree(OLgraph G,char x){
int count=0;
int i=LocateX(G,x);
arcnode *p=G.xlist[i].firstout;
while(p){
count++;
p=p->tlink;
}
return count;
}
void main(void) {
OLgraph G;
CreateG(G,4,2);
cout<<G.xlist[0].firstout->tailvex;
}