首页 > 解决方案 > 有条件地从单链表中删除的 C++ 方法

问题描述

作为序言,我的目标是创建一个函数,该函数给出一个指向自定义链表中节点的指针,将遍历列表并在迭代时有条件地删除节点,在它们出现时修复潜在的间隙并保持起始节点更新如果如果列表中的所有元素最终都被删除,它将被删除或设置为 nullptr。我实际上有一个完整的代码版本:

void DeleteObjectsByDoublePointer(Node **pStartPtr)
{
    do
    {
        if ((*pStartPtr)->ShouldDelete())
        {
            Node *toDelete = *pStartPtr;
            *pStartPtr = (*pStartPtr)->next;
            delete(toDelete);
        }
        else 
        { 
            pStartPtr = &(*pStartPtr)->next;
        }
    }
    while (*pStartPtr != nullptr);
}

我的问题是我对 C++ 世界还很陌生,据我所知,指向指针的指针有点像 C 语言的遗物。我认识到解决方案可能是解决方案,但有没有人对我有什么建议是否会将其重写为更像 C++,例如使用引用之类的东西?我似乎无法以更好地满足我的要求的方式重新创建功能,而且我无法推理为什么会这样。

标签: c++

解决方案


推荐阅读