gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:18:41 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com