Ich wurde ermutigt, C++ ohne oo Konzepte zu verwenden. Ich habe an der Funktion "InsertIntoSortedList" mit doppelt verknüpften Liste gearbeitet. Es erlaubt mir jedoch, den ersten Knoten einzufügen. Ab dem zweiten Knoten springt er aus der Funktion heraus. Here is the Sample Output. Der Code funktioniert gut auf einem einfachen Programm, also habe ich versucht, es auf einem komplizierteren Programm zu verwenden. Ich werde die Codierung für beide Programme unten setzen.C++ Doppelt verknüpfte Liste ohne OO-Konzepte In sortierte Liste einfügen
void InsertIntoSortedList(){
newnode = new carlist;
newnode->next = NULL;
newnode->back = NULL;
if (head == NULL) {
cout << "List is empty, Please insert Data: " << endl;
cout << "ID: ";
cin >> newnode->id;
cout << "Description: ";
cin >> newnode->description;
cout << "Price: ";
cin >> newnode->price;
cout << "Stock: ";
cin >> newnode->stock;
head = tail = newnode;
}
else if (newnode->price < head->price) {
InsertAtBeginning();
}
else {
temp = head;
while (temp != NULL) {
if (newnode->price > temp->price) {
previous = temp;
}
else {
break;
}
temp = temp->next;
}
if (temp == NULL) {
InsertAtEnd();
}
else {
newnode->next = previous->next;
previous->next->back = newnode;
previous->next = newnode;
newnode->back = previous;
}
}
es funktioniert auf diesem Programm feinen
void insertIntoSortedList(int eid) {
newnode = new employee;
newnode->employeeID = eid;
newnode->next = NULL;
newnode->back = NULL;
if (head == NULL) {
head = tail = newnode;
}
else if (eid < head->employeeID) {
insertatBeginning(eid);
}
else {
temp = head;
while (temp != NULL) {
if (eid > temp->employeeID) {
previous = temp;
}
else {
break;
}
temp = temp->next;
}
if (temp == NULL) {
insertAtEnd(eid);
}
else {
newnode->next = previous->next;
previous->next->back = newnode;
previous->next = newnode;
newnode->back = previous;
}
}
Könnte jemand mir erklären, was das Problem ist, und warum es nicht funktionieren könnte? Ich versuche sogar, die doppelt verkettete Liste herauszuziehen, und ich denke, es sollte gut funktionieren. Dieses Ding nervt mich die ganze Nacht. Vielen Dank im Voraus.
Sie sollten wirklich 'nullptr', nicht' NULL' verwenden. –