bool isduplicate if(p==nullptr) { p->next=q; q->value=x; } while (p!=nullptr) { p=p->next; } //arrived at NULL ptr p->next=q; q->value=x; q->next=nullptr; return q; }
答案 0 :(得分:1)
你没有检查内部循环中的空current
(或runner
)指针,这可能意味着迟早要么为空,然后你做
if(runner->value == current->value)
或
current = current->next;
取消引用空指针是未定义的行为,很可能会导致崩溃。
答案 1 :(得分:1)
逻辑错误。在while循环开始时current不等于runner,而while循环中的任何内容都不会使它们彼此相等。最终你要取消引用空指针。
正确的逻辑比你拥有的更简单。试试这个
current = p;
while (current != nullptr)
{
runner = current->next;
while (runner != nullptr)
{
if (runner->value == current->value)
return true;
runner = runner->next;
}
current = current->next;
}
return false;