【发布时间】:2021-05-04 19:47:19
【问题描述】:
我正在尝试在 C++ 中实现一个链表。我有以下代码
class LinkedList {
private:
struct node {
int data;
node* next;
}*
head;
node* mkNode(int data, node* next){
node* n;
n->data = data;
n->next = next;
return n;
}
public:
LinkedList(){
head = NULL;
}
void insertAtHead(int data){
head = mkNode(data, head);
}
};
我在mkNode() 函数内的n->data = data; 和n->next = next; 行上得到一个segmentation fault: 11。知道为什么吗?
【问题讨论】:
-
这是未定义的行为:
node* n; n->data = data;。在使用之前,您必须将n初始化为某个有效的内存地址。 -
我该怎么做?
-
分配一个
node的有效地址。结构为n.
标签: c++ class pointers struct linked-list