程序填空题:采用邻接表表示法创建无向图
采用邻接表表示法创建无向图。
```c++
#include
using namespace std;
#define MVNum 100
#define OK 1
typedef char VerTexType;
typedef int OtherInfo;
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc;
}ArcNode;
typedef struct VNode{
VerTexType data;
ArcNode *firstarc;
}VNode, AdjList[MVNum];
typedef struct{
AdjList vertices;
int vexnum, arcnum;
}ALGraph;
int LocateVex(ALGraph G , VerTexType v){
for(int i = 0; i < G.vexnum; ++i)
if(G.vertices[i].data == v)
return i;
return -1;
}
int CreateUDG(ALGraph &G){
int i , k;
cin >> G.vexnum >> G.arcnum;
for(i = 0; i < G.vexnum; ++i){
cin >> G.vertices[i].data;
G.vertices[i].firstarc=NULL;
}
for(k = 0; k < G.arcnum;++k){
VerTexType v1 , v2;
int i , j;
cin >> v1 >> v2;
i = @@[LocateVex(G, v1)](1); j = @@[LocateVex(G, v2)](1);
ArcNode *p1=new ArcNode;
@@[p1->adjvex=j](1);
p1->nextarc= @@[G.vertices[i].firstarc](1); G.vertices[i].firstarc=p1;
ArcNode *p2=new ArcNode;
@@[p2->adjvex=i](1);
p2->nextarc= @@[G.vertices[j].firstarc](1); G.vertices[j].firstarc=p2;
}
return OK;
}
```
答案:
第1空:LocateVex(G, v1)
第2空:LocateVex(G, v2)
第3空:p1->adjvex=j
第4空:G.vertices[i].firstarc
第5空:p2->adjvex=i
第6空:G.vertices[j].firstarc
```c++
#include
using namespace std;
#define MVNum 100
#define OK 1
typedef char VerTexType;
typedef int OtherInfo;
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc;
}ArcNode;
typedef struct VNode{
VerTexType data;
ArcNode *firstarc;
}VNode, AdjList[MVNum];
typedef struct{
AdjList vertices;
int vexnum, arcnum;
}ALGraph;
int LocateVex(ALGraph G , VerTexType v){
for(int i = 0; i < G.vexnum; ++i)
if(G.vertices[i].data == v)
return i;
return -1;
}
int CreateUDG(ALGraph &G){
int i , k;
cin >> G.vexnum >> G.arcnum;
for(i = 0; i < G.vexnum; ++i){
cin >> G.vertices[i].data;
G.vertices[i].firstarc=NULL;
}
for(k = 0; k < G.arcnum;++k){
VerTexType v1 , v2;
int i , j;
cin >> v1 >> v2;
i = @@[LocateVex(G, v1)](1); j = @@[LocateVex(G, v2)](1);
ArcNode *p1=new ArcNode;
@@[p1->adjvex=j](1);
p1->nextarc= @@[G.vertices[i].firstarc](1); G.vertices[i].firstarc=p1;
ArcNode *p2=new ArcNode;
@@[p2->adjvex=i](1);
p2->nextarc= @@[G.vertices[j].firstarc](1); G.vertices[j].firstarc=p2;
}
return OK;
}
```
答案:
第1空:LocateVex(G, v1)
第2空:LocateVex(G, v2)
第3空:p1->adjvex=j
第4空:G.vertices[i].firstarc
第5空:p2->adjvex=i
第6空:G.vertices[j].firstarc