是的,用c语言写一个创建AOE网 功能描述:通过提示语句printf("有向图\n");printf("请输入顶点数,弧的数\n");通过键盘输入顶点数和弧数,赋值给G的vexnum和arcnum 然后通过提示语句printf("请初始化顶点\n");从0开始建立顶点并赋值给vertices数组,最后通过提示语句printf("请初始化弧\n"); printf("输入格式:顶点1 顶点2 权值(表示顶点1邻接到顶点2)\n\n")创建弧。 参数描述:ALGraph 型指针*G
时间: 2023-07-07 17:21:49 浏览: 118
好的,以下是用C语言编写的创建AOE网的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 20
typedef char VertexType;
typedef int ArcType;
typedef struct ArcNode {
int adjvex; //邻接点在顶点数组中的位置下标
struct ArcNode *nextarc; //指向下一条弧的指针
ArcType weight; //边的权值
} ArcNode;
typedef struct VNode {
VertexType data; //顶点信息
ArcNode *firstarc; //指向第一条依附该顶点的弧的指针
} VNode, AdjList[MAX_VERTEX_NUM];
typedef struct {
AdjList vertices; //图中顶点数组
int vexnum, arcnum; //图中当前顶点数和弧数
} ALGraph;
// 创建AOE网
void CreateGraph(ALGraph *G) {
printf("有向图\n");
printf("请输入顶点数,弧的数\n");
scanf("%d%d", &G->vexnum, &G->arcnum);
getchar(); //读掉回车符
// 初始化顶点
printf("请初始化顶点\n");
for (int i = 0; i < G->vexnum; i++) {
printf("请输入第%d个顶点的值:", i);
scanf("%c", &G->vertices[i].data);
G->vertices[i].firstarc = NULL;
getchar(); //读掉回车符
}
// 初始化弧
printf("请初始化弧\n");
printf("输入格式:顶点1 顶点2 权值(表示顶点1邻接到顶点2)\n");
int v1, v2, w;
for (int i = 0; i < G->arcnum; i++) {
scanf("%d%d%d", &v1, &v2, &w);
// 创建新的弧结点
ArcNode *p = (ArcNode*)malloc(sizeof(ArcNode));
p->adjvex = v2;
p->weight = w;
p->nextarc = G->vertices[v1].firstarc;
G->vertices[v1].firstarc = p;
}
}
int main() {
ALGraph G;
CreateGraph(&G);
return 0;
}
```
这段代码实现了创建AOE网的功能。用户首先需要输入顶点数和弧数,然后逐个输入顶点的值,最后输入每个弧的信息。弧的信息是由两个顶点和一条边权值组成的,输入格式为“顶点1 顶点2 权值”。在输入过程中,需要注意读掉回车符。最后,创建的AOE网存储在ALGraph型指针*G中。
阅读全文