c++ - 使用前一个节点的地址删除节点

标签 c++ linked-list

我有一个名为 Find 的方法,当用户输入一个元素的值时,该地址将保存在一个名为 *npt 的新节点中。

使用 *npt 作为参数,我应该创建一个删除方法,删除保存在 npt 中的值之后的值。

例如,如果这是我的列表: 134、564、674、253,我在查找中输入 674,然后 253 被删除。

目前,这是我的删除功能代码:

void LinkedList::Delete(Node *PrePosition){
Node *temp = PrePosition -> next;
PrePosition->next = PrePosition->next->next;
delete temp;
}

但问题是目前无法删除头节点。我得到的唯一提示,对我没有真正帮助的是: 如果要删除列表的头部,则 PrePosition 为 NULL。

最佳答案

假设你必须做一个递归版本。 为 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;
}

关于c++ - 使用前一个节点的地址删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213418/

相关文章:

多模式的 C++ 模板类实现

c++ - 在异常处理程序中使用 'goto' 是不好的风格吗?

perl - 如何使用 Perl XS 中的 C 链表?

c++ - 如何使用结构创建链表?

c++ - 如何从析构函数调用 const 成员函数

c++ - 与 std::future::unwrap 竞争异常传播

C++ - 在 C++ 类中初始化私有(private)数组

c - 柔性/Bison : Comma-separated linked list?

c++ - 需要链表解释

java - 迭代链表时出现 NullPointerException