如何制作节点数组?

新手上路,请多包涵

我对指针和数组有一点误解。当我想创建一个节点数组时,我需要一个指针吗?

是吗

Node* array;
array = new Node[size];

当然问题是当我想将节点分配到数组中时

void Class::enqueue(int newNum)
{

    Node* newNode = new Node();
    newNode->value = newNum;
    newNode->age = 0;

    if (isFull())
        resize();
    top++;
    array[top] = newNode; // ERROR. does this have to be a pointer?
}

newNode 是一个指针,我理解。但是如果我想动态分配一个节点,那么我将不得不使用一个指针。如果是这种情况,那么我将如何将节点分配到数组中?谢谢。

原文由 Jack Smother 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 405
1 个回答

你说你想要一个节点数组,但似乎你真正想要的是一个指向节点的 指针 数组。您的代码中的 newNode 是一个指针,因此该数组应该能够保存 Node 的指针。将您的数组定义为:

 Node** array;
array = new (Node*)[size];

记住在不再需要时释放内存:

 delete []array;


您还可以使用 Node 的数组:

 Node* array;
array = new Node[size];

...
Node *newNode = new Node();
...
array[top] = *newNode; // dereference the pointer

但是您应该小心,因为这样节点的内容将被 复制 到数组单元格中。然后会有两个独立的对象,持有相同的数据。您不能使用数组的内容来操作原始节点。

我猜你真的需要一个指向节点的 指针 数组:)(或者正如比尔所说,一个指针向量: vector<Node*> v;

原文由 Mohammad Dehghan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题