Podwójne wyświetlanie w strukturze(lista dwukierunkowa)

0

Witam, posiadam problem z programem, a mianowicie z funkcją sortującą która wyświetla podwójnie takie same nazwiska z struktury, niestety nie wiem jak zaimplementować aby tak nie robiła.

void sortowanie(struct osoba * lokalna)
{
    int ilosc=0, i=0 ,j=0;
    lokalna=pierwszy;
    while(lokalna!=NULL)
    {
        if((*lokalna).ID!=NULL)
            ilosc++;
        lokalna=(*lokalna).nastepny;
    }
    free(lokalna);
    lokalna=pierwszy;
    char **wyrazy;
    wyrazy =(char**)malloc(ilosc*sizeof(char *)); //przydzielamy pamiec dla tablicy
    for(i=0;i<ilosc;i++)
    {
        wyrazy[i]=(char*)malloc(4*sizeof(char));
        wyrazy[i]=(*lokalna).nazwisko;
        lokalna=(*lokalna).nastepny;
    }
    qsort (wyrazy, ilosc, sizeof(char*), cmp);//Sortuje ilosc elementów, o rozmiarze równym sizeof(char*) bajtów każdy,
    lokalna=pierwszy;                    //tablicy wyrazy za pomocą funkcji porównującej cmp
    if(lokalna!=NULL)
    {
        printf("w kolejnosci: nazwisko, imie, ID, miasto.\n \n");
        for(i=0;i<ilosc;i++)
        {
        lokalna=pierwszy;
        while(lokalna!=NULL)
            {
            if(strcmp((*lokalna).nazwisko,wyrazy[i])==0)
            {
                printf("%s \t %s \t %d \t %s\n",(*lokalna).nazwisko,(*lokalna).imie,(*lokalna).ID,(*lokalna).miasto);
            }
            lokalna=(*lokalna).nastepny;
            }
        }
    }
    else
        printf("Baza danych jest pusta!\n");
    free(lokalna);
    free(wyrazy);
    printf("Nacisnij dowolny przycisk aby kontynuowac . . .\n");
    scanf("%s",&x);
    system("cls");
} 

int cmp (const void * a, const void * b) //porównywarka dla qsorta
{
    const char **ia = (const char **)a;
    const char **ib = (const char **)b;
    return strcmp(*ia, *ib);
}

Mogę takze przesłać cały program na priv i dziękuje za każdą pomoc :)

0

Natychmiast wywal to do kosza. Poczytaj byle jaki kurs na temat C. Zacznij od nowa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1