创建一个Node指针数组

时间:2014-10-15 02:48:54

标签: c++ arrays pointers

  struct Node {
      int data;        // The data being stored at the node
      Node *next;     // Pointer to the next node
      };

int main()
{
         Node **nodeArray = new (Node*)[5];
}

第一个问题:

main中的语句是否是一种有效的方法来创建一个包含5个节点的数组?

main和Node **nodeArray = new Node*[5];中的语句有什么区别? Main目前给我一个错误:在括号后的type-id |

之后禁止数组绑定

第二个问题:

我如何通过阵列为每一个阵列做一个新的?我曾经使用过数组,而且我已经使用过链接列表了,但把它们放在一起看起来比我想象的要复杂。

2 个答案:

答案 0 :(得分:3)

如果你知道你最多需要5个项目,你应该使用静态分配,因为它更快,你不必担心解除分配数组。

Node* array[SOME_CONST];
for (int i=0; i < SOME_CONST; i++)
{   
   array[i] = new Node()
   cout<<array[i];
}

对于动态分配的数组几乎是一样的,你只需要实现指针new返回指向数组中第一项的内容。

Node** array = new Node*[some_num];
for (int i=0; i < some_num; i++)
{
   array[i] = new Node();
}

不要忘记妥善解除分配:

for (int i=0; i < some_num; i++)
{
   delete array[i];
}
delete[] array;

答案 1 :(得分:1)

  1. 只需循环播放5 Node*,然后为每个new Node分配一个{{1}}。或者,如果您正在尝试制作链接列表,可以将其中的每一个分配给5中的下一个。