Вместо использования strcpy
, почему бы просто не переместить указатели узла?Если это односвязный список, вам понадобится узел before
, предшествующий узлу temp
, поэтому, когда вы делаете temp = temp->next
, вы сначала делаете before = temp
.Вот как вы бы поступили с двусвязным узлом:
if (strcmp(/*...*/) > 0) {
ReviewNode *swap = temp->next;
temp->next = swap->next;
swap->prev = temp->prev;
swap->next = temp;
temp->prev = swap;
}
Таким образом, вам не нужно копировать строки, которые могут занять гораздо больше времени, чем простое перемещение узлов вокруг.Хороший способ узнать, как перемещать эти ссылки, - это взять карандаш и лист бумаги и смоделировать отсортированный список.Это требует времени, но в конечном итоге вы многому у него научитесь!
Без дополнительной информации сложно понять, с какими проблемами вы сталкиваетесь.Удачи!