Sortowanie listy jednokierunkowej

0

Witam

Proszę o pomoc w napisaniu kodu funkcji sortującej listę jednokierunkową ze względu na wartość pola ocena.

student *sortowanie(student *glowa){
    student *wsk, *pom, *wsk1;

    for(wsk=glowa;wsk!=NULL;wsk = wsk->nast){
        for(wsk1=glowa->nast ; wsk1!=NULL ; wsk1 = wsk1->nast){
            if(wsk->ocena > wsk1->ocena){
                swap(wsk->nast, wsk1->nast);

            }

        }

    }
    return glowa;
}

Zależy mi na czymś w tym stylu, tylko że ten kod nie działa ;v

Pozdrawiam.

1
student *sortowanie(student *glowa)
{
    student *wsk = glowa;
    while (wsk != NULL)
    {
        student *poprz = NULL, *biez = glowa, *nastep = glowa->nast;
        while (nastep != NULL)
        {
            if (biez->ocena > nastep->ocena)
            {
                biez->nast = nastep->nast;
                nastep->nast = biez;
                if (poprz != NULL)
                {
                    poprz->nast = nastep;
                }
                else
                {
                    glowa = nastep;
                }
            }                
            poprz = biez;
            biez = nastep;
            nastep = nastep->nast;
        }
        wsk = wsk->nast;
    }
    return glowa;
}

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