用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 18:18:42 浏览: 72
好的,你的问题是如何用C语言写创建AOE网的功能,我会为你解答。
首先,我们需要定义一个结构体来表示AOE网的图结构,其中包括顶点数、弧数、顶点数组和弧数组。可以定义如下:
```
typedef struct ArcNode {
int adjvex; // 邻接点在顶点数组中的下标
int weight; // 权值
struct ArcNode *next; // 指向下一个邻接点的指针
} ArcNode;
typedef struct VNode {
char data; // 顶点的数据
int indegree; // 顶点的入度
int top_num; // 顶点的拓扑序号
ArcNode *firstarc; // 指向第一个邻接点的指针
} VNode;
typedef struct {
VNode vertices[MAX_VERTEX_NUM]; // 顶点数组
int vexnum, arcnum; // 顶点数和弧数
} ALGraph;
```
接下来,我们需要实现创建AOE网的函数create_AOE_graph(),这个函数可以按照以下步骤完成:
1. 提示用户输入顶点数和弧数,并将其赋值给G的vexnum和arcnum。
2. 提示用户初始化顶点,从0开始建立顶点并赋值给vertices数组。
3. 提示用户初始化弧,输入格式为“顶点1 顶点2 权值”,根据输入建立弧。
具体的代码实现如下:
```
void create_AOE_graph(ALGraph *G) {
int i, j, k;
char data;
int weight;
ArcNode *p;
printf("有向图\n");
printf("请输入顶点数和弧数: ");
scanf("%d %d", &(G->vexnum), &(G->arcnum));
printf("请初始化顶点: \n");
for (i = 0; i < G->vexnum; i++) {
printf("请输入第%d个顶点的值: ", i);
scanf(" %c", &data);
G->vertices[i].data = data;
G->vertices[i].indegree = 0;
G->vertices[i].firstarc = NULL;
}
printf("请初始化弧: \n");
for (k = 0; k < G->arcnum; k++) {
printf("请输入第%d条弧的顶点1、顶点2和权值: ", k);
scanf("%d %d %d", &i, &j, &weight);
p = (ArcNode*)malloc(sizeof(ArcNode));
p->adjvex = j;
p->weight = weight;
p->next = G->vertices[i].firstarc;
G->vertices[i].firstarc = p;
G->vertices[j].indegree++;
}
}
```
这样,我们就完成了创建AOE网的功能。你可以根据自己的需要进行修改和扩展。
阅读全文