Я не могу понять, где моя логика c сбивается с пути в следующих строках кода. Связанный список находится в узлах внутри дерева двоичного поиска. Ниже приведена моя функция сортировки связанного списка по строкам с использованием функции сравнения
void addNewLLObj(TreeNode *tNode, int ranking, string title, int year, float rating){
LLMovieNode* newNode = new LLMovieNode(ranking, title, year, rating);
LLMovieNode* crawler = tNode -> head;
LLMovieNode* prev = NULL;
while(crawler != NULL){
if(crawler->title.compare(title) > 0){ // checks if the current nodes title is larger than insert title
if(crawler == tNode->head){
newNode->next = crawler;
tNode->head = newNode;
}
else{
prev->next = newNode;
newNode->next = crawler;
}
}
else if(crawler->next == NULL){
crawler->next = newNode;
newNode->next = NULL;
}
prev = crawler;
crawler = crawler->next;
}
}
Если я даю строки заголовка "D ccc", "Daaa", "Dfff", "Dzzz", "Deee "в таком порядке
Я потеряю строку" Dfff "при печати связанного списка. Я уверен, что мой обратный список связан правильно. Я просто не могу понять, где лог c не так. Я не уверен, перезаписываю ли я где-нибудь "Dfff" или у меня есть утечка памяти.