Предпосылка: одна из необходимых функций в назначении - сортировка связанного списка.То, как я это сделал, вероятно, очень неэффективно, но это единственный способ, которым я знаю, как это сделать.
Вопрос: Если у меня есть один связанный список информации, как бы я (внутри функции) "перезаписать »информацию о переданном в связанном списке.
Код:
void sortPlaylist(Node **pList) {
Node * pCur = (*pList);
// Find size of list
int size = sizeOfList(*pList);
// Create a new Node, allocate the memory for a copy of the whole list
Node * sortedList = NULL;
// Create an array of the Records in our list
Record * records;
records = malloc(size * sizeof(Record));
for (int i = 0; i < size; i++) {
records[i] = pCur->record;
pCur = pCur->pNext;
}
// Selection sort the records (it works with arrays, the code is long though)
// Write the sorted records into a new list
for (int i = 0; i < size; i++) {
printf("\nAdding artist to new list %s\n\n", records[i].artist);
insertFront(&sortedList, records[i]);
printRecord(sortedList);
}
// ERROR HERE I THINK
// Assign the sorted list to pList
*pList = sortedList;
// Free the sortedList
free(sortedList);
}
Ошибка в том, как я назначаю отсортированный список обратно исходному списку, как я полагаю.Также я хотел бы знать, правильно ли там использовать free (sortedList), и это освободит всю память, включенную в sortedList, или просто указатель на него, и в этом случае я думаю, что я просто запускаю цикл forосвобождая весь список.
Спасибо