数据结构第二版严蔚敏
//边结点
typedef struct ArcNode{
int adjvex; //该边所指向的顶点
ArcNode *nextArc;
}ArcNode;
//顶点信息
typedef struct vNode{
int data;
ArcNode *firstarc; //指向第一条依附该顶点的边
}adjList;
typedef struct ALGraph{
adjList vertice[99]; //vertice(顶点),vertice[i].data保存顶点值
int vexNum, arcNum;
}ALGraph;
void createUDG(ALGraph &g){
scanf("%d%d", &g.vexNum, &g.arcNum);
for(int i=0; i < g.vexNum ; i++){
scanf("%d", &g.vertice[i].data);
g.vertice[i].firstarc = NULL;
}
int v1, v2;
for(int k=0; k<g.arcNum; k++){ //输入各边
scanf("%d%d", &v1, &v2);
ArcNode *p1 = new ArcNode;
p1->adjvex = v2; //指针用 -> 变量用 .
p1->nextArc = g.vertice[v1].firstarc;
g.vertice[v1].firstarc = p1; //插入边 把v2接到v1后
//无向图还须将v1接到v2后
ArcNode *p2 = new ArcNode;
p2->adjvex = v1;
p2->nextArc = g.vertice[v2].firstarc;
g.vertice[v2].firstarc = p2;
}
}