Cześć, próbuję napisać funkcję sortującą listę jednokierunkową w C, ale co chwile wywala mi jakieś błędy i nie mam pomysłu już jak to zrobić. Na pewno mam gdzieś błędy ze wskaźnikami, alokacją pamięci albo czymś takim, ale nie wiem gdzie i czemu. Byłbym wdzięczny za pomoc :>
void sortuj(workday** lista)
{
workday* posortowana;
workday *przed_max;
while (lista != NULL) {
workday *max = *lista;
workday* p;
workday* i;
for (p = *lista, i = lista->next; *i != NULL; p = *i, i = i->next) {
if (czasPracy(i) > czasPracy(max)) {
*max = i;
*przed_max = p;
}
}
if (przed_max != NULL)
przed_max->next = max->next;
else
lista = max->next;
max->next = posortowana;
posortowana = max;
}
lista = posortowana;
}