Witam, przeczytałem już na tym forum mnóstwo tematów o sortowaniu listy jednokierunkowej i co dziwne w żadnym nie znalazłem choćby jednego dobrego normalnego przykładu z tym własnie zagadnieniem. Sam próbuje się z nim zmierzyć i napotkałem problem, zamieszczam swój kod poniżej. Sądzę że jednym z problemów może być to że odwołuje się niejako do obiektów a nie do wskaźników na te obiekty.
Za wszelkie porady , przykłady będę bardzo wdzięczny .
Z góry dzięki i pozdrawiam .
void lista :: sort_list()
{
element *tmp = pfirst;
int size_list = 0;
while(tmp!=NULL)
{
size_list++;
tmp = tmp->pnext;
}
element *wsk_previus = pfirst;
element *wsk_actual = pfirst->pnext;
bool zmiana ;
while(true)
{
zmiana =false;
for(int i =0;i<size_list-1;i++)
{
if(wsk_previus->wartosc > wsk_actual->wartosc)
{
zmiana = true;
element *temp = wsk_previus;
wsk_previus = wsk_actual ;
wsk_actual = temp;
}
wsk_previus = wsk_previus->pnext;
wsk_actual = wsk_actual->pnext;
}
if(!zmiana)break;
}
}