如何将节点存储在数组 C++ 中?

How to store a node in an array C++?

这不是用数组存储节点的方法吗?当我尝试 运行 时,出现分段错误。我知道如果您尝试访问您没有权限的内存,就会发生这种情况。 在这段代码中,我不是在数组中分配节点并打印其数据吗?

struct Node{
    int data;
    struct Node* next;
};
struct Node* head = NULL;
int main(){
    struct Node* arr[10];
    head->data = 2;
    head->next = NULL;
    arr[1] = head;
    std::cout << arr[1]->data;

}

您在这里处理的不是 Nodes,而是 Node 指针。他们没有指向有效的内存,除非你分配它。

此外,不要使用 NULL,而是使用 nullptr

head = nullptr;
head->data = 42; // this is UB, could be a segfault

如果你想这样做,你必须分配它

head = new Node{};
head->data = 42; //ok

同样的逻辑适用于arr

arr[1] = new Node{}; // now arr[1] is pointing to valid memory

不过,我不确定您为什么需要一个节点指针数组。你的 Node 结构看起来像一个传统的链表节点,并且有一个 linked-list 标签,所以我猜你想实现链表。

在这种情况下,您根本不需要节点指针数组。整个链表应该通过 head.

连接起来

如果你只想要一个节点数组,那么你可以这样做,根本不用担心内存分配。

Node arr[10] {};
arr[1].data = 42; // ok