我正在尝试用 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);
}
};
我在 segmentation fault: 11
函数内的 n->data = data;
和 n->next = next;
行上得到一个 mkNode()
。知道为什么吗?
答案 0 :(得分:1)
node* mkNode(int data, node* next)
{
node* n;
n->data = data;
n->next = next;
return n;
}
指向“节点”的指针“n”未初始化。尝试用struct节点内存初始化。
node* n = new struct node;
答案 1 :(得分:1)
您的指针未初始化。 在堆上创建一个对象就可以解决这个问题,使用后不要忘记释放内存。
node* mkNode(int data, node* next){ return new node({data,next}); }