gpt4 book ai didi

C++ 分配节点指针

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:53 25 4
gpt4 key购买 nike

我正在使用不相交集和 union/查找操作制作 C++ 迷宫程序。

我有一个 MakeSet(int x) 函数,它为迷宫中的每个整数元素 x 创建一个新节点。 (即 4x4 迷宫的 1 到 16)。因此最初每个元素都在它自己的集合中。

我的 MakeSet 看起来像这样

void Maze::MakeSet(int x)
{
Node *root = new Node;
root->label = x;
root->parent = NULL;
}

但在 CreateMaze() 函数中,我必须多次调用 MakeSet 才能将所有元素最初放入它们自己的集合中。因此,根将继续被覆盖。如何动态分配许多不同的节点?我应该将它们分开放在一个数组中吗?

最佳答案

您已经分配了一个新的节点,您只是没有保留它。您需要将函数更改为返回 Node*,并将结果存储在数组或 vector 中。

Node* Maze::MakeSet(int x) {
Node *root = new Node;
root->label = x;
root->parent = NULL;
return root;
}

Node *nodes[16];
for (int i = 0 ; i != 16 ; i++) {
nodes[i] = Maze::MakeSet(i);
}

更好的方法是在 构造函数 中进行 Node 初始化:

Node::Node(int x) : label(x), parent(NULL) {
}

您现在可以在循环中创建所有集合,并将指向它们的指针存储在数组中:

Node *nodes[16];
for (int i = 0 ; i != 16 ; i++) {
nodes[i] = new Node(i);
}

关于C++ 分配节点指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10475101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com