[C++] Sortowanie listy jednokierunkowej

kamilall234
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 2 lis 2008, o 10:39
Płeć: Mężczyzna
Lokalizacja: dsa
Podziękował: 1 raz

[C++] Sortowanie listy jednokierunkowej

Post autor: kamilall234 »

Mam posortować listę alfabetycznie nazwiskami:/ No i faktycznie sortuje tylko wyświetla potem jeden
wskaźnik listy który jest posortowany, a reszta nie. Na dodatek zawsze ten pierwszy co wpisywany był jest usunięty.. Ten pierwszy po sortowaniu. Prosze o pomoc w funkcji sortowanie.

Kod: Zaznacz cały

struct Dane{
string imie,nazwisko;
Dane *next;
};


void wpisz(Dane *&adres)
{
    adres=new Dane;
    Dane *glowa,*tmp;
    tmp=new Dane;
    tmp=adres;
    cout<<"Imie i nazwisko "<<endl;
    string im,nazw;
    cin>>im;
    cin>>nazw;
    while(im!="koniec" && nazw!="koniec")
    {   glowa = new Dane;
        adres->imie=im;
        adres->nazwisko=nazw;
        cout<<"imie i nazwisko, koniec konczy liste"<<endl;
        cin>>im;
        cin>>nazw;
        if((im=="koniec") || (nazw=="koniec"))
        {
        adres->next=NULL;
        adres=tmp;
        }
        else{
        adres->next=glowa;
        adres=glowa;

    }}

}

void wypisz(Dane *adres)
{
    while(adres!=0)
    {
        cout<<adres->imie<<" "<<adres->nazwisko<<endl;
        adres=adres->next;
    }
}

void sortowanie(Dane *adres)
{   string nazw,nazw1;
    Dane *tmp,*pom;
    pom = new Dane;
    tmp=new Dane;
    *tmp=*adres;
    tmp=adres;
    nazw=tmp->nazwisko;
    Dane *adr=new Dane;
    adr=adres;
    while(adr!=0)
    {


        while(adres!=0)
        {nazw1=adres->nazwisko;
        if(nazw[0]>nazw1[0])
        {   *pom=*tmp;
            pom=tmp;

            *tmp=*adres;
            tmp=adres;
            *adres=*pom;
            adres=pom;


        }
        adres=adres->next;
    }
        adr=adr->next;

}}
ODPOWIEDZ