预定义:
typedef struct ArcNode{
int adjvex;
ArcNode *nextarc;
}ArcNode;
typedef struct VNode{
VerTexType data;
ArcNode *firstarc;
}VNode,AdjList[MVNum];
typedef struct{
AdjList vertices;
int vexnum, arcnum;
}ALGraph;
构造邻接链表:
//记录节点是否已经被访问:
bool visited[MAXSIZE];
int LocateVex(AMGraph *G,VerTexType v){
for(int i=0;i<G->vexnum;i++){
if(G->vex[i]==v)
return i;
}
return -1;
}
int CreateGraph()
{
ALGraph* G;
G->vexnum=x;
G->arcnum=x;
for(i = 0;i<G->vexnum;i++){
G->vertices[i].data=x;
G->vertices[i].firstarc=NULL;
visited[i] = false;
}
for(k=0;k<G->arcnum;k++){
//v1(i)-v2(j),无向
i = LocateVex(G, v1);
j = LocateVex(G, v2);
//头插法,无向图两个结点的边都要插入
ArcNode p1;
p1->adjvex = j;
p1->nextarc = G->vertices[i].firs