Node* RemoveDuplicates(Node *head)
{
if (head == NULL || head->next == NULL)
{
return head;
}
else
{
Node *ptr = head;
Node *tmp = head->next;
int a = ptr->data;
int b = tmp->data;
while (ptr->next != NULL)
{
if (a == b)
{
while (a == b)
{
ptr->next = tmp->next;
tmp = tmp->next;
}
}
else
{
ptr = ptr->next;
tmp = tmp->next;
}
}
return head;
}
}
GDBのOUTPUT:リンクリストの重複要素を削除するためにこのメソッドを書いたが、セグメンテーションフォルトが表示されるのはなぜですか?
GDB trace:
Reading symbols from solution...done.
[New LWP 11656]
Core was generated by `solution'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 RemoveDuplicates (head=0x150fd00)
at solution.cc:31
31 ptr->next=tmp->next;
#0 RemoveDuplicates (head=0x150fd00)
at solution.cc:31
#1 main() at solution.cc:80
は、私は本当に、誰かが私を助けてください理由を理解することはできません、hackerrankとそのは次の出力を示した上で、このコードを書きました!このコードでは
[mcve] please – StoryTeller
まず、[ラバーダックのデバッグ](https://en.wikipedia.org/wiki/Rubber_duck_debugging)を試してみてください。そして、アルゴリズムを紙に詳述し、デバッガで行ごとにコードを実行して、実行することを確認します。あなたが最後のことをしたら(デバッガでコードをステップ実行する)、あなたは非常に迅速に問題を見つけることができるはずです!ヒント:無限ループがあります。 –