链表无法在next里添加新结点

因为没有头结点,删除第一个结点很麻烦,但是保留头结点,在next又无法添加新结点,麻烦各位看一下应该如何修改

template  class Link {
private :
    node>* head;
    node>* rear;
public:
    Link() {
        node> *head = new node>;
        head = NULL;
        rear = head;
    }
        bool CreateLink(T k) {
        node> *value = new node>;
        value->data = k;
        value->next = NULL;
        rear->next = value;//在链表插入的时候,报错rear为nullptr无法添加
        rear = value;
        return true;
    }
};

你要先判断head是否为空啊


template <typename T > class Link {
private :
    node<T>* head;
    node<T>* rear;
public:
    Link() {
        head = new node<T>;
        head->next = NULL;
        rear = head;
    }
        bool CreateLink(T k) {
        node<T> *value = new node<T>;
        value->data = k;
        value->next = NULL;
        rear->next = value;
        rear = value;
        return true;
    }
};
 

以下答案引用自GPT-3大模型,请合理使用:

,谢谢

解答:
在Link()函数中,head和rear应该指向同一个地址,即新建的node<T>,否则在CreateLink函数中rear->next会指向NULL,导致添加失败。

修改后的Link()函数如下:
Link() {
    node<T> *head = new node<T>;
    head = NULL;
    head = rear = new node<T>;
}

如果我的回答解决了您的问题,请采纳我的回答