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