Witam
Mam duży problem z napisaniem funkcji sortującej listę jednokierunkową. Funkcja sortująca jest wywoływana po dodaniu nowego rekordu do listy. Niestety, pomimo udanej kompilacji nie chce sortować tzn. nie zmienia nic na liście, a program nie wyrzuca żadnego błędu. Oto kod:
typedef struct baza {
int numer; //numer kontaktu
char imie[15];
char nazwisko[20];
char ulica[20];
char nrdomu[5];
char telefon[20];
struct baza *nast; //wskaznik do nastepnego elementu listy
int zlicz;
} Baza;
Baza *pierwszy,*aktualny,*nowy;
void sortowanie()
{
struct baza *tmp = NULL;
struct baza *next = NULL;
for (aktualny=pierwszy; aktualny && aktualny->nast; aktualny=aktualny->nast)
{
if ( atoi(aktualny->telefon) > atoi(aktualny->nast->telefon) )
{
tmp = (struct baza*)calloc( 1, sizeof( struct baza ) );
next = (struct baza*)calloc( 1, sizeof( struct baza ) );
*tmp = *aktualny;
*next = *aktualny->nast;
aktualny = next;
if( !(next->nast) )
aktualny->nast = NULL;;
}
}
}
Z góry dziękuję za pomoc i pozdrawiam.