firstadjvex函数具体代码
时间: 2023-12-29 22:03:13 浏览: 30
以下是一个使用邻接表存储图,并实现 "firstadjvex" 函数的示例代码:
```c++
#define MAX_VERTEX_NUM 100 // 最大顶点数
#define INFINITY 65535 // 无穷大
// 定义边结构体
typedef struct ArcNode {
int adjvex; // 该边指向的顶点位置
struct ArcNode* nextarc; // 指向下一条边的指针
int weight; // 权重
} ArcNode;
// 定义顶点结构体
typedef struct {
int data; // 顶点的数据
ArcNode* firstarc; // 该顶点的第一条边
} VNode, AdjList[MAX_VERTEX_NUM];
// 定义图结构体
typedef struct {
AdjList vertices; // 存储所有顶点的邻接表
int vexnum, arcnum; // 顶点数和边数
} ALGraph;
// 找到顶点 v 的第一个邻接顶点,并返回其下标
int firstadjvex(ALGraph G, int v) {
if (v >= G.vexnum) {
return -1; // 顶点不存在,返回 -1
}
if (G.vertices[v].firstarc) { // 如果该顶点有第一条边
return G.vertices[v].firstarc->adjvex; // 返回第一条边指向的顶点下标
}
else {
return -1; // 该顶点没有边,返回 -1
}
}
```
以上代码是使用邻接表存储图,并实现了 "firstadjvex" 函数。在该函数中,我们传入了一个存储图的邻接表和需要查找的顶点下标,通过遍历该顶点的邻接表,找到第一个边并返回其指向的顶点下标即可。需要注意的是,如果该顶点没有任何边,则返回 -1。