Stworzyłem listę jednokierunkowa i teraz chciałbym ją posortować niemalejąco, wytłumaczyłby mi ktoś w jaki sposób mógłbym to zrobić?
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
struct liczba
{
int el;
liczba *nastepna; //wskaznik na nastepny element
liczba(); //konstruktor
};
liczba::liczba(){ //konstruktor
nastepna = 0;
}
struct lista
{
liczba *pierwsza; // wskaznik na 1 el listy
void dodaj_element(int el);
void usunDuplikaty();
void usunElement(int nr); // usuwa wybrany element z listy
lista();
};
lista::lista(){
pierwsza = 0; //konstruktor
}
void lista::dodaj_element(int el)
{
liczba *nowa = new liczba; // tworzy nowy el listy
// wypelnia naszymi danymi
nowa->el=el;
if(pierwsza==0) // sprawdzamy czy to 1 element listy
{
pierwsza = nowa; //jezeli tak to nowy element jest poczatkiem listy
}
else
{
//w przeciwnym wypadku wedrujemy na koniec listy
liczba *temp = pierwsza;
while(temp->nastepna)
{
//znajdujemy wskaznik na ostatni element
temp = temp ->nastepna;// ostatni element wskazuje na nasz nowy
}
temp->nastepna = nowa; // ostatni element wskazuje na nasz nowy
nowa -> nastepna = 0; // ostatni nie wskazuje na nic
}
}
int main()
{
lista *baza = new lista; //tworzymy liste
// dodajemy rekordy do bazy
baza->dodaj_element(3);
baza->dodaj_element(2);
baza->dodaj_element(6);
baza->dodaj_element(12);
cout << baza->pierwsza->el << endl;
cout << baza->pierwsza->nastepna->el << endl;
delete (baza);
return 0;
}