邻接表法创建无向图(C++实现)
#include <stdio.h>
#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct ArcNode{
int adjvex;
ArcNode *nextarc;
}ArcNode;
typedef struct {
int data;
ArcNode *firstarc;
}VNode, AdjList[MAXSIZE];
typedef struct {
AdjList vertices;
int vexnum, arcnum;
}ALGraph;
int LocateVex(ALGraph G, int v1){
for(int i=0; i<G.vexnum; i++){
if(G.vertices[i].data==v1)
return i;
}
return 0;
}
void CreatUDG(ALGraph &G){
cin>>G.vexnum>>G.arcnum;
for(int i=0; i<G.vexnum; i++){
cin>>G.vertices[i].data;
G.vertices[i].firstarc = NULL;
}
cout<<'l'<<endl;
for(int k=0; k<G.arcnum; k++){
int v1, v2;
cin>>v1>>v2;
int i = LocateVex(G, v1);
int j = LocateVex(G, v2);
ArcNode *p = new ArcNode ;
p->adjvex = j;
p->nextarc = G.vertices[i].firstarc;
G.vertices[i].firstarc = p;
ArcNode *q = new ArcNode;
q->adjvex = i;
q->nextarc = G.vertices[j].firstarc;
G.vertices[j].firstarc = q;
}
cout<<'k'<<endl;
}
int main()
{
ALGraph G;
CreatUDG(G);
cout<<'l';
}