删除循环链表c ++中的节点?

ang*_*oni 0 c++ linked-list

编辑:使用c ++编写代码.

void circularList::deleteNode(int x)
{
    node *current;
    node *temp;
    current = this->start;

    while(current->next != this->start)
    {
        if(current->next->value == x)
        {
            temp = current->next;
            current->next = current->next->next;
            delete current->next;
        }
    else{ 
            current = current->next;
             }
    }
}
Run Code Online (Sandbox Code Playgroud)

添加其他我很抱歉我有点忘了复制代码的那部分,是的,它是出于学习目的.我不熟悉使用c ++进行编码,可能会对此感到遗憾.

对于这行代码

this-> start-> value == x

我不确定你的意思或你认为它的去向,是的,链表中有节点,并假设它始终总是有至少1个节点.

Let*_*_Be 6

想想这两行:

current->next = current->next->next;

delete current->next;

尝试确定您实际删除的内容(不是current->next;,不是,但至少不是您要删除的内容).


Jus*_*eel 6

您永远不会移动到while循环中的下一个节点.在你的if之后,你应该:

else
    current = current->next;
Run Code Online (Sandbox Code Playgroud)

此外,您可能需要考虑在找到节点后从函数返回(除非您怀疑两个节点具有相同的值).