ノードが順番に表示されるようにリストにノードを挿入する際に問題があります。ノードをリストに挿入するための私の関数は次のとおりです。
void LinkedList::insert(const int item)
{
Node *newNode = new Node;
newNode -> data = item;
if(head == NULL)
{//in case of empty list
head = tail = newNode;
newNode -> next = NULL;
newNode -> previous = NULL;
++count;
} else {
Node *ptr = head;
while((ptr && (ptr -> next) != NULL) && (item < (ptr -> data)))
{//traversing the list to find the correct insertion point
ptr = ptr -> next;
}
if((ptr -> previous) == NULL)
{//the insertion point is before the head of the list
newNode -> previous = NULL;
newNode -> next = ptr;
ptr -> previous = newNode;
head = newNode;
++count;
}
else if((ptr -> next) == NULL)
{//end of list insertion
newNode -> next = NULL;
newNode -> previous = ptr;
ptr -> next = newNode;
tail = newNode;
++count;
} else {//middle of the list insertion
(ptr -> previous) -> next = newNode;
newNode -> previous = ptr -> previous;
newNode -> next = ptr;
ptr -> previous = newNode;
++count;
}
}
}
順序付けられているノードは、リストの先頭または末尾に挿入されたノードのみです。ノードをリストの途中に挿入する必要がある場合、ノードの順序は違反します。main() から結果を出力すると、次のようになります。
int main()
{
LinkedList database;
cout<<"The count is: "<< database.lenght() << endl;
database.insert(11);
database.insert(1);
database.insert(8);
database.insert(62);
database.insert(55);
database.insert(100);
database.insert(00);
cout<< endl;
cout<<"The count is: "<< database.lenght() << endl;
cout<< endl;
database.print_forwards();
return 0;
}
出力:
The count is : 0
the count is : 7
100
62
55
8
1
11
0
誰かが挿入機能の何が問題なのか説明できますか? ありがとうございました、