Ich versuche, Knoten zu einer doppelt verknüpften Liste in alphabetischer Reihenfolge in Bezug auf das Titelelement des Knotens hinzuzufügen. Bisher habe ich versucht, die Liste zu durchlaufen und nach dem Fall (strcmp(title, currTitle) > 0)
zu suchen. Die Iteration funktioniert jedoch nicht (aus Gründen, die ich nicht sicher bin), da der unten aufgeführte Versuch der verknüpften Liste keine Elemente hinzufügt.C++: Hinzufügen von Knoten zu doppelt verknüpften Liste in alphabetischer Reihenfolge
Der Satz von vier Bedingungen für den if - else-Block fügt Elemente erfolgreich zur Liste hinzu, wenn sie nicht mit dem Sortierversuch implementiert wird.
void SongList::addSongSorted(const Song &aSong)
{
//sort inputs to the list by alphabetical order of the entire title
char title[MAX_CHAR];
char currTitle[MAX_CHAR];
aSong.getTitle(title);
Node * newNode = new Node(aSong);
Node * curr = head;
//Increment through list as added...this does not work
for(curr = head; curr; curr = curr->next)
{
if(strcmp(title, currTitle) > 0)
{
if(!head)
{
head = newNode;
tail = newNode;
head->next = NULL;
head->prev = NULL;
}
else if(head->prev == NULL)
{
newNode->next = head;
head = newNode;
newNode->prev = NULL;
}
else if(head->next == NULL)
{
curr->next = newNode;
newNode->prev = curr;
newNode->next = NULL;
tail = newNode;
}
else
{
newNode->next = curr->next;
newNode->prev = curr;
}
}
}
}
Wie ist es, dass Inkrementieren durch die Liste und Hinzufügen an einem Knoten basierend auf dem Vergleich von Elementen nicht funktioniert? Was ist eine Lösung?
Warum verwenden Sie Array von Zeichen? Benutzen Sie 'std :: string' – Inline
@Inline Dies ist für eine Hausaufgabe – 0x1000001
Sie behandeln nicht' strcmp (titel, currTitle) <= 0' – GMichael