0

リンクされたリストから削除しようとしています。しかし、最初の要素を削除しようとすると、うまくいかないようです。

if (found)
{
    if (prev == NULL)
    {
        prev = head;
        prev -> next = curr -> next;
        delete curr;
    }
    else
    {
        prev -> next = curr -> next;
        delete curr;
    }
}

return found;

findNode 関数は、途中または末尾から削除する場合に機能します。しかし、末尾から削除する場合は、次を NULL に設定する必要があることがわかりました。そうですか?

4

2 に答える 2

1

問題はおそらくhead、リストの新しい先頭を指すように実際に変更していないことです。変更する必要がありますhead

if (prev == NULL)
{
    head = head->next;  // Set `head` to point to the next node, i.e. the new `head`
    delete curr;
}
于 2013-02-14T17:43:19.793 に答える
0

findNodeそれが正しく、prev前にノードに設定されていると仮定するとcurr(二重にリンクされたリストを検討したい場合があります)、

   if (prev == NULL)
   {
      prev = head;
      prev -> next = curr -> next;
      delete curr;
   }

間違っている。prevがNULLの場合、見つかったのはヘッドノードです。

したがって、コードは次のようになります

   if (prev == NULL)
   {
      head = head->next;
      delete curr;
   }
于 2013-02-14T17:45:39.023 に答える