私はクラス内にノードをとり、二重リンクリストの直後のノードを削除する関数を記述しようとしています。最初のノードまたは最後のノードを削除する別々の関数があるので、これは中間ノードの場合のみです。私はその論理が理にかなっていると思ってコードをコンパイルしてみましたが、テストしようとするとプログラムが停止することはありませんので、whileループにはまっていると思います。私はまた、私は関数を正しく呼び出すのか分からない。 と呼ばれる二重にリンクされたリストで、1
、2
、3
および4
を入力して、DLL.removeAfter(2)
をメインに置いて、3
を削除しようとしました。私はこれに論理的に瑕疵がある方法を見ています。なぜなら、2
がリストに複数ある可能性があるからですが、何が正しいのか分かりません。二重リンクリスト内のノードの後にあるノードを削除する
void DoublyLinkedList::removeAfter(const DListNode &p)
{
DListNode *node = header.next;
while(node != &p)
{
node->next; //iterate to p;
}
node->next; //Get to the node after p that is to be deleted
node->prev->next = node->next;
node->next->prev = node->prev;
delete node;
}
ありがとうございます。私はその変更を実装しました。どのように関数を呼び出すのですか? – claire
投稿を編集して 'DoublyLinkedList'クラスをインスタンス化して関数を呼び出す方法を示すことができますか? – Matt
助けてくれてありがとう!すべてが今働きます。 – claire