二重リンクリストと単一リンクリストの両方からノードを削除するためのロジックを思い付くのに苦労しています。ヘルプからオンラインで調べましたが、簡単な例が見つかりませんでした。これが私が持っているものです:
二重にリンクされた削除。dCurrent
削除するノードです。
if (dCurrent == dHead){
dHead = dCurrent->next;
dHead->prev = NULL;
}
else if(dCurrent == dTail){
dTail = dCurrent->prev;
dTail->next = NULL;
}
else{
dCurrent->next->prev = dCurrent->prev;
dCurrent->prev->next = dCurrent->next;
}
これが私が単一リンクリストのために持っているものです。繰り返しsCurrent
ますが、削除するノードです。およびsPrev = sCurrent->prev
。
if(sPrev == NULL){
sHead = sCurrent->next;
}
else{
sPrev->next = sCurrent->next;
}
問題は、両方のリストからランダムノードのコレクションを削除した後、二重にリンクされたリストが頭から尾まで正しく表示されますが、尾から頭までは正しく表示されないことです。単一リンクリストも正しく表示されません。