链接列表删除节点C
Linked list delete node c++
我有此链接列表adt。我唯一的问题是在此删除功能中。我尝试运行干燥,但无法正确弄清楚。请有人解释
void list::remove(int v)
{
node *temp, *pre;
temp = head;
if(temp->data==v)
{
head = temp->next;
delete temp;
cout << endl << v << "has been deleted" <<endl;
return;
}
pre = temp;
while(temp!=0)
{
if(temp->data==v)
{
pre->next = temp->next;
delete temp;
cout << "nValue deleted" <<endl;
return;
}
pre = temp;
temp = temp->next;
}
cout << endl << v << "not found" <<endl;
}
int main()
{
list l;
l.insert(8);
l.insert(9);
l.insert(10);
l.display();
cout << "After deleting" <<endl;
l.remove(9);
l.display();
}
乍一看时,代码似乎是正确的。快速解释是:您正在制作两个节点指针,一个指向列表上的当前元素,一个指向上一个元素。第一种情况是,您要删除的元素在列表的开头(因此是头部)。在这种情况下,您将头移到下一个元素(head = temp->下一个)并删除节点。另一种情况是该元素在列表中的某个地方。使用while循环您扫描列表(pre = temp,temp = temp->接下来是将您移至下一个元素),并使用IF条件您检查是否是您要寻找的元素。
相关文章:
- 为什么我的删除节点函数实际上没有删除节点?
- 我们可以删除链表中静态内存中的节点吗
- 为什么"delete"关键字不删除节点?
- 为什么我的双向链表删除函数会删除多个节点?
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 删除 XML 文件中的子节点C++
- 创建了一个链表,但如何删除 c++ 中的"所有"节点
- 从unordered_map中删除单个节点
- 删除链表中的特定节点
- 在C++中删除双向链表的头节点后出现访问冲突异常
- 删除链表中的节点 - 分段错误
- 删除链接列表中剩余的最后一个节点
- 避免在使用链接列表从 deque 中删除最后一个节点时出现内存泄漏
- 使用函数引用指向节点的指针删除链表中的节点?
- 双向链表 - 无法删除第一个节点
- 双向链表 std::unique_ptr 类在节点删除时无法按预期工作
- BST 节点删除 - 指针未正确删除
- 节点删除功能的链表问题
- 布尔函数始终为真,单向链表中的尾节点删除创建无限循环
- AVL树中节点删除值异常