代码存在一些问题,需要进行修改:

  1. 在定义节点指针数组v时,需要为每个节点分配内存空间。

  2. 在定义节点结构体中,需要为相邻边的指针数组adjvex分配内存空间。

  3. 在设置相邻的边border值为1时,需要判断边是否为null,否则会出现访问非法内存的错误。

  4. 在进行颜色染色时,需要使用==进行判断是否为1,否则会将所有边的border值都设为1。

  5. 在进行颜色染色时,需要将k的初始化放在for循环外面,否则每次循环都会将k的值重置为0。

  6. 最后输出结果的语句需要放在main函数的最后。

修改后的代码如下:

#include using namespace std; struct node { int num; int color; side* adjvex[7]; node() // 构造函数,初始化adjvex数组 { for (int i = 0; i < 7; i++) { adjvex[i] = new side(); } } }; struct side { int border = 0; node* vjex;

}; int main() { node* v[7]; int paint[4] = { 1,2,3,4 }; for (int i = 0; i < 7; i++) { v[i] = new node(); // 为每个节点分配内存空间 v[i]->num = i + 1; if (i < 6) v[0]->adjvex[i + 1]->vjex = v[i + 1]; } v[0]->adjvex[0]->border = 0; v[0]->adjvex[0]->vjex = v[0]; v[0]->adjvex[1]->border = 1; v[0]->adjvex[1]->vjex = v[1]; v[1]->adjvex[0]->border = 1; v[1]->adjvex[0]->vjex = v[0]; v[1]->adjvex[2]->border = 1; v[1]->adjvex[2]->vjex = v[2]; v[2]->adjvex[0]->border = 1; v[2]->adjvex[0]->vjex = v[0]; v[2]->adjvex[1]->border = 1; v[2]->adjvex[1]->vjex = v[1]; v[2]->adjvex[3]->border = 1; v[2]->adjvex[3]->vjex = v[3]; v[2]->adjvex[4]->border = 1; v[2]->adjvex[4]->vjex = v[4]; v[3]->adjvex[0]->border = 1; v[3]->adjvex[0]->vjex = v[0]; v[3]->adjvex[2]->border = 1; v[3]->adjvex[2]->vjex = v[2]; v[3]->adjvex[4]->border = 1; v[3]->adjvex[4]->vjex = v[4]; v[4]->adjvex[0]->border = 1; v[4]->adjvex[0]->vjex = v[0]; v[4]->adjvex[2]->border = 1; v[4]->adjvex[2]->vjex = v[2]; v[4]->adjvex[5]->border = 1; v[4]->adjvex[5]->vjex = v[5]; v[5]->adjvex[0]->border = 1; v[5]->adjvex[0]->vjex = v[0]; v[5]->adjvex[4]->border = 1; v[5]->adjvex[4]->vjex = v[4]; v[6]->adjvex[0]->border = 1; v[6]->adjvex[0]->vjex = v[0];

int k = 0;
for (int i = 0; i < 7; i++)
{
    for (int j = 0; j < 7; j++)
    {
        if (v[i]->adjvex[j]->border == 1)
            v[j]->color = paint[k];
        else if (v[i]->adjvex[j]->border == 0 && i != j)
            v[i]->color = v[j]->color = paint[k];
    }
    k = (k + 1) % 4;
}
for (int i = 0; i < 7; i++) { cout << v[i]->color << " "; }
return 0;
#includeiostreamusing namespace std;struct node	int num;	int color;	side adjvex7;;struct side	int border=0;	node vjex;	;int main	node v7;	int paint4 = 1234;	for int i = 0; i 7; i++ 			vi-num = i + 1;

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

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