无法为结构属性赋值。 C++

时间:2021-01-31 12:26:05

标签: c++ class pointers struct linked-list

我正在尝试用 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()。知道为什么吗?

2 个答案:

答案 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}); }