何人かの人の名前をアルファベット順に循環二重リンク リストに挿入したいのですが、追加できるのは 3 つまでで、なぜこれが起こっているのかわかりません。挿入する新しいノードを関数に渡し、insert
それへのポインターを作成し、正しい挿入場所を見つけるためにリスト全体をループしています。ただし、名前が 3 つを超えると、ノードが削除され、別のノードが挿入されます。誰かがこれを理解するのを手伝ってくれますか?
その他の詳細:
- それぞれにとと呼ば
Node
れる 2 つのポインターがあり、データ メンバーとして呼び出されます。next
prev
string
data
- この
List
クラスには、挿入関数と表示関数、およびダミーのヘッド ノードを指すヘッド ポインターが含まれています。が初期化されると、このヘッド ノードnext
とprev
ポインタはそれ自体を指します。List
これは私が書いた挿入関数です:
void List::insert(Node newObject)
{
Node *toInsert = &newObject;
Node *cur = head->next;
while((cur != head) && (newObject.data > cur->data))
{
cout << "Is this loop entered?" << endl;
cur = cur->next;
}
toInsert->next = cur;
toInsert->prev = cur->prev;
cur->prev = toInsert;
toInsert->prev->next = toInsert;
}
そして私のmain.cpp
:
#include "list.h"
#include "node.h"
using namespace std;
int main()
{
Node nikhil = Node("Nikhil");
Node kaustubh = Node("Kaustubh");
Node jon = Node("Jonathan");
Node james = Node("James");
Node elias = Node("Elias");
Node kenny = Node("Kenny");
List suiteMates;
suiteMates.insert(nikhil);
suiteMates.insert(kaustubh);
suiteMates.insert(jon);
suiteMates.insert(james);
suiteMates.insert(elias);
suiteMates.insert(kenny);
suiteMates.display();
}