假设不带权有向图采用邻接表 G 存储,下面算法的功能是:求出图中每个顶点的入度。 请在空白处填入正确的语句。 //求出图 G 中每个顶点的入度void InDs(ALGraph *G) { ArcNode *p; //A 存放各顶点的入度 int A[MAX_VERTEX_NUM], i; //A 中元素置初值 0 for(i = 0; i<G->n; i++) A[i]=0; for(i = 0; i < G->n; i++) { //扫描所有头结点 p = ____________; while(p != NULL) { //扫描边结点 ____________; //表示 i 到 p->adjvex 顶点有一条边 p = p->nextarc; } } printf("各顶点入度:\n"); //输出各顶点的入度 for(i = 0; i < G->n; i++) printf(" 顶点%d:%d\n", i, A[i]); }
时间: 2024-01-23 14:03:20 浏览: 55
-针对一按照邻接表存放的有向图,计算图中节点的出度和入度
5星 · 资源好评率100%
空白处填写的语句是:
```
p = G->vertices[i].firstarc;
A[p->adjvex]++;
```
第一个循环已经将 A 数组初始化为 0。
第二个循环是为了遍历图中的每个顶点,对于每个顶点,访问其邻接表中的边结点来更新其入度。
在处理每个头结点时,我们需要通过 `p = G->vertices[i].firstarc` 获取其邻接表的第一个边结点。
然后,我们需要遍历该顶点的所有出边,即遍历该顶点的邻接表,对于每个邻接点,通过 `p->adjvex` 获取其顶点号,然后将该顶点的入度加 1,即 `A[p->adjvex]++`。
这样,我们就可以求出图中每个顶点的入度了。
阅读全文