c++ - 删除双向链表中给定节点之后的节点

标签 c++ doubly-linked-list

我正在尝试在我的类中编写一个函数,该函数接收一个节点并在双向链表中直接删除该节点之后的节点。我有单独的函数可以删除第一个或最后一个节点,所以这只是在中间节点的情况下。我认为它的逻辑是有道理的并且我的代码可以编译,但是当我尝试测试它时,程序永远不会停止运行,所以我认为它卡在了 while 循环中。我也不确定我是否正确调用了该函数。在名为 DLL 的双向链表中,由 1234,我试图通过将 DLL.removeAfter(2) 放在 main 中来删除 3。我明白这在逻辑上是有缺陷的,因为列表中可能有多个 2,但我不知道什么是正确的。

void DoublyLinkedList::removeAfter(const DListNode &p)
{
    DListNode *node = header.next;
    while(node != &p)
    {
        node->next; //iterate to p;
    }
    node->next; //Get to the node after p that is to be deleted
    node->prev->next = node->next;
    node->next->prev = node->prev;
    delete node;
}

最佳答案

我认为您想用 node = node->next 替换 node->next 的两个实例,否则您永远不会更改 node< 的值.

关于c++ - 删除双向链表中给定节点之后的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340451/

相关文章:

c++ - 如何将包含空格的字符数组读取为整数?

c++ - 双向链表 : Properly deleting an adding something in the middle of a list?

c++ - 打印双向链表 - 无结果

c - C中双链表交换节点

java - 插入已排序的双向链表

c++ - 双向链表的奇怪复制构造函数

c++ - QT C++ 如何正确创建以对象为参数的函数

.net - 我可以使用 C++/CLI (.NET Winforms/WPF) 为使用 native C 和 C++ 编写的应用程序提供 GUI

c++ - map 数据结构不显示 main.cpp 中保存的条目

c++ - 事件处理器模板 : unresolved external