用C语言求某个顶点的所有邻接点all_adj(G,v,wArray),返回值为所有顶点的个数;,G表示图的邻接矩阵或邻接表,v为顶点序号,wArray参数为数组,使用引用方式传递到all_adj函数中,用于保存函数返回的v的所有邻接点
时间: 2023-09-20 12:10:51 浏览: 65
对于邻接矩阵,可以按照以下方式实现all_adj函数:
```c
int all_adj(int G[][n], int v, int wArray[]) {
int count = 0;
for (int i = 0; i < n; i++) {
if (G[v][i] != 0) { // 如果v和i之间有边
wArray[count++] = i; // 将i加入到邻接点数组中
}
}
return count; // 返回邻接点个数
}
```
其中,n表示图中顶点的个数,一般在函数外部定义。wArray数组需要在函数外部先定义好,并且大小应该足够存放所有邻接点。
对于邻接表,可以按照以下方式实现all_adj函数:
```c
typedef struct Node {
int val;
struct Node* next;
} Node;
Node* G[MAXN]; // 邻接表
int all_adj(Node* G[], int v, int wArray[]) {
int count = 0;
Node* p = G[v];
while (p != NULL) { // 遍历v的所有邻接点
wArray[count++] = p->val;
p = p->next;
}
return count; // 返回邻接点个数
}
```
其中,MAXN表示顶点的最大个数。邻接表使用链表实现,G数组中存储了每个顶点的邻接链表头指针。wArray数组需要在函数外部先定义好,并且大小应该足够存放所有邻接点。
阅读全文