建立AOE图的程序 void CreateGraph(vexnode* Graph,int vexnumber,int arcnumber) { int begin,end,duttem,i; char ch; edgenode *p; for(int i=0;i<vexnumber;i++) { Graph[i].id =0; Graph[i].firstedge =NULL; } printf("请输入这个图中的各个顶点的值:\n"); for(i=0;i<vexnumber;i++){ scanf("%s",&ch); Graph[i].data=ch; } printf("请输入图中弧的起始点及权值:其格式为<起点,终点,权值>\n"); for(int k=0;k<arcnumber;k++) { scanf("%d,%d,%d",&begin,&end,&duttem); p=(edgenode*)malloc(sizeof(edgenode)); p->adjvex =end-1; p->w =duttem; Graph[end-1].id ++; p->nextedge =Graph[begin-1].firstedge ; Graph[begin-1].firstedge =p; }此函数模块流程图
时间: 2024-01-13 15:02:40 浏览: 20
好的,这是一个建立AOE图的程序,下面是代码解释:
```
void CreateGraph(vexnode* Graph, int vexnumber, int arcnumber) {
int begin, end, duttem, i;
char ch;
edgenode* p;
for (int i = 0; i < vexnumber; i++) {
Graph[i].id = 0;
Graph[i].firstedge = NULL;
}
printf("请输入这个图中的各个顶点的值:\n");
for (i = 0; i < vexnumber; i++) {
scanf("%s", &ch);
Graph[i].data = ch;
}
printf("请输入图中弧的起始点及权值:其格式为<起点,终点,权值>\n");
for (int k = 0; k < arcnumber; k++) {
scanf("%d,%d,%d", &begin, &end, &duttem);
p = (edgenode*)malloc(sizeof(edgenode));
p->adjvex = end - 1;
p->w = duttem;
Graph[end - 1].id++;
p->nextedge = Graph[begin - 1].firstedge;
Graph[begin - 1].firstedge = p;
}
}
```
这个函数的作用是创建一个AOE图。函数中首先使用了一个 for 循环,将图中每个节点的 `id` 和 `firstedge` 均初始化为 0 和 NULL。接着,使用 `printf()` 和 `scanf()` 函数分别获取每个节点的值,并将其存储在相应的 `Graph[i].data` 中。然后,使用 `printf()` 函数提示用户输入每个弧的起始点、终点和权值,并使用 `scanf()` 函数获取这些信息。接着,创建一个新的 `edgenode` 结点,并将其 `adjvex` 和 `w` 分别初始化为输入的终点和权值。然后,将终点的 `id` 加 1,将新创建的节点插入到起点的邻接表开头,并更新起点的 `firstedge`。最后,循环结束后,AOE图创建完成。