Definicja listy:
struct elem
{
int wiek;
elem*nastepny;
elem();
};
elem::elem ()
{
nastepny=0;
}
struct lista
{
elem*pierwszy;
void dodaj ();
int usun (int x);
void dodajdotab (int tab[]);
int sortujliste (elem *pocz, int n);
void dodajdddddddddddddddotab ();
void sortujlisdfgdfte (elem *pocz);
int usunpoindeksie (int x);
lista();
};
lista::lista ()
{
pierwszy=0;
}
Definicja funkcji znajdź
elem znajdz (elem *element, int x)
{
if(x>0)
return znajdz(element->nastepny, x-1);
if(x==0)
return *element;
}
a oto algorytm sortujący:
int lista:: sortujliste (elem *pocz, int n)
{
elem * e, * p;
int v;
pierwszy = new elem;
pierwszy->nastepny = new elem;
pierwszy->nastepny->nastepny = NULL;
for(int i = 0; i < n; i++)
{
v=znajdz(pocz,i).wiek;
for(p = pierwszy; v > p->nastepny->wiek; p = p->nastepny) ;
e = new elem;
e->wiek = v;
e->nastepny = p->nastepny;
p->nastepny = e;
}
for(p = pierwszy->nastepny; p->nastepny; p = p->nastepny)
cout << p->wiek << " ";
return 0;
}
Problem w tym że po posortowaniu "pierwszy" jest pusty a dopiero pierwszy-> nastepny reprezentuje pierwszy wyraz listy.