C++ 分配节点指针

标签 c++ pointers nodes

我正在使用不相交集和并集/查找操作制作一个 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/

相关文章:

计算 C 列表中的符号变化

java - 更新渲染的树单元

c++ - 缓存行、错误共享和对齐

c - 索引到数组中以读取数据(C ......我认为这是一个非常基本的问题)

C Sprintf 格式错误

c++ - C++ 内存指针练习中的未知崩溃

c++ - 图的节点类(C++)

c++ - 如何在 C++ 中维护对 COM 对象的弱引用?

c++ - 二进制读/写到 std::stringstream

c++ - "Cannot appear in a constant expression",我需要它作为一个变量,为什么它不让我这样做?