私のコードは、リンクリストL
から値target
を削除するためのものです。私が見つけることができない何らかの理由で、セグメンテーションフォールトを引き起こすか、または2番目のprintステートメントを実行することはありません。また、数値が削除されている場合は0を、そうでない場合は1を返します。コードがセグメンテーションフォールトを起こす、または実行を完了しない
unsigned int removeNumber(LL_t * L, int target)
{
int ret = 0;
node_t * current = L->head;
node_t * previous = NULL;
node_t * tmp = current;
for(current = L->head; current != NULL; previous = current, current->next)
{
if ((current->data == target) && (previous != NULL))
{
free(current);
current = current->next;
previous = current;
ret += 1;
}
else if ((current->data == target) && (previous == NULL)){
L->head = current->next;
}
}
if (ret > 0)
{
return 0;
}
return 1;
}
問題を示す完全なプログラムを含めてください。ここに指示があります。[mcve] – sigjuice
あなたはここで何をしていると思いますか? current = current-> next; ' –
さらにいくつかのエラー:' current'を 'current-> next'に進めることはないので、実際にはリストを歩いていません。あなたのremove-from-head-of-listコードは 'ret'を増やさず、' free'を決して呼び出さないようにメモリをリークします。 –