これは、要素item
を持つノードを削除するための私の削除関数です。私はsegフォルトが発生していると私はかなり確信しているので、temp - > prevはフロントセンチネルなので、技術的には二重リンクリストにはない。それが正しいのであれば、どうすればこれを防ぐことができますか?どんな助けもありがとう。二重リンクリストのノードを削除する(C++)
編集:ただ、コードを更新しましたが、それでもあなたはwhile()
ループを使用してノードがリストノードを通過したいワンセグ障害と
void list::remove(const list_element & item)
{
list_node* temp = _front;
for (int i = 0; i < _size; i++)
{
if (temp -> next -> data == item)
{
if (temp -> prev == _front)
{
_front = temp -> next;
}
else if (temp -> next == _rear)
{
temp -> prev -> next = _rear;
}
else
{
temp -> prev -> next = temp -> next;
temp -> next -> prev = temp -> prev;
}
}
delete temp;
}
}
あなたの開発環境に付属しているはずのデバッガであなたの疑惑を確認することをお勧めします。デバッガは、今まで発見したことのない最高のプログラミング生産性のツールである可能性が高いので、他のものに費やす時間が長くなればなるほど、すぐに使用できるようになります。 – user4581301
つまり、次のノードを調べて削除する必要があるかどうかを確認してから、現在のノードを削除しているようです。 – user4581301