Witam,
Mam problem z posortowaniem struktury. Powinna być ona sortowana wg nazwiska, zamieniając wskaźniki do następnego elementu.
struct ELEMENT
{
char imie[20];
char nazwisko[20];
int nr_indeksu;
ELEMENT* next;
};
struct HEADER
{
ELEMENT* head;
ELEMENT* tail;
};
void Lista::sort()
{
unsigned short int ilosc = 0;
for (ELEMENT* el = header.head; el; el = el->next) ++ilosc;
ELEMENT* temp = new ELEMENT;
unsigned short int i, j;
if (ilosc) ilosc--;
for(i = 0; i < ilosc; i++)
for (ELEMENT* el = header.head; el->next; el = el->next->next)
if(strcmp(el->nazwisko, el->next->nazwisko) > 0){
temp = el;
el = el->next;
el->next = temp;
}
}
Na chwile obecną niestety program się wiesza, ale tylko jeżeli w pierwszej strukturze nazwisko jest zaczyna się na literę "większą" niż następna nazwisko na litere "niższą" np. po wprowadzeniu następujących danych: Jan Nowak 12345 i Adam Kowalski 54321
Dodawanie, usuwanie danych działa prawidłowo. Proszę o pomoc w poprawieniu mechanizmu sortowania.