编辑:使用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个节点.
想想这两行:
current->next = current->next->next;
delete current->next;
尝试确定您实际删除的内容(不是current->next;,不是,但至少不是您要删除的内容).
您永远不会移动到while循环中的下一个节点.在你的if之后,你应该:
else
current = current->next;
Run Code Online (Sandbox Code Playgroud)
此外,您可能需要考虑在找到节点后从函数返回(除非您怀疑两个节点具有相同的值).