因为'adjvex'是一个指向'side'结构体的指针数组,而不是一个'node'结构体的成员,所以不能直接在'node'结构体中定义'adjvex'成员。可以使用下面的方法将'adjvex'与'node'结构体关联起来:

  1. 在'node'结构体中定义一个指向'side'结构体的指针,例如:
struct node
{
    int num;
    int color;
    side* edge;  // 指向相邻边的指针
};
  1. 在'side'结构体中定义一个指向'node'结构体的指针,例如:
struct side
{
    int border;
    node* vertex;  // 指向相邻顶点的指针
};
  1. 在创建'node'和'side'时,将它们的指针互相关联起来,例如:
node* v[7];
side* e[21];  // 一共有21条边
for (int i = 0; i < 7; i++)
{
    v[i] = new node();
    v[i]->num = i + 1;
}
for (int i = 0; i < 21; i++)
{
    e[i] = new side();
}

// 将边与顶点关联起来
e[0]->vertex = v[0];  // 第一条边与v[0]相邻
v[0]->edge = e[0];    // v[0]的相邻边为第一条边

e[1]->vertex = v[0];
v[0]->edge = e[1];

e[2]->vertex = v[1];
v[1]->edge = e[2];

// ...
  1. 在访问相邻顶点和相邻边时,通过指针进行访问,例如:
v[0]->edge->vertex;    // 访问v[0]的第一条边的相邻顶点
v[1]->edge->border;    // 访问v[1]的第一条边的border值
C++ 图结构数据结构实现详解:节点与边关联方法

原文地址: https://www.cveoy.top/t/topic/ohwt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录