因为没有头结点,删除第一个结点很麻烦,但是保留头结点,在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>;
}
如果我的回答解决了您的问题,请采纳我的回答