ノードの位置を削除しようとしています。下のコードの行削除アイテムがsegフォルトを引き起こしています。しばらくの間、私は断った。ここ は、removeメソッドです:C++ - 二重リンクリストのノードを削除すると、セグメンテーションフォールトが発生する
void* List::remove(long index){
if(index > this->size-1){
return NULL;
}
else {
long i = 0;
List::ListItem *item = this->head;
while(i <= this->size-1){
if(index == 0){
item->getNext()->setPrev(NULL);
this->head = item;
this->size--;
delete item;
break;
}
else if(indexOf(item->getData()) == index){
item->getPrev()->setNext(this->head->getNext());
item->getNext()->setPrev(this->head->getPrev());
this->size --;
break;
}
else {
item = item->getNext();
i++;
}
}
}
return NULL;
}
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
また、このアルゴリズムはリンクリストの実装では追加する価値がありません。何のリストではない。 – DeiDei
@DeiDeiアルゴリズムに何が問題なのですか?より正確にお願いしますか? –