使用上一个节点

时间:2016-03-25 03:09:35

标签: c++ linked-list

我有一个名为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。

1 个答案:

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