我有一个名为Find的方法,当用户输入一个元素的值时,该地址将保存在一个名为* npt的新节点中。
使用* npt作为参数,我应该创建一个删除方法,删除npt中保存的值后的值。
例如,如果这是我的列表: 134,564,674,253,我为Find输入674,然后删除253。
目前,这是我删除功能的代码:
void LinkedList::Delete(Node *PrePosition){
Node *temp = PrePosition -> next;
PrePosition->next = PrePosition->next->next;
delete temp;
}
但问题是,目前无法删除头节点。我得到的唯一暗示,这对我没有帮助,这是: 如果要删除列表的头部,则PrePosition为NULL。
答案 0 :(得分:0)
假设你必须做一个递归版本。 为Head做个条件。在查找:
Node* find(T value){
if (head->value == value)
return nullptr;
return find(head->next);
现在在删除:
void Delete(Node * pre) {
Node* temp;
if (pre == nullptr) {
temp = head;
head = head->next;
} else {
temp = pre->next;
pre->next = pre->next->next;
}
delete temp;
}