Witam, napisałem kawałek kodu, m.in jest tam opcja sortowania i niestety mi nie działa, tj nie sortuje, Program się kompiluje uruchamia ale gdy wybiorę sortowanie to klapa…
struct lista_zoo
{
lista_zoo *next; //wskaźnik do następnego elementu
lista_zoo *prev; //wskaźnik do poprzedniego elementu
string gromada;
string rodzina;
string gatunek;
string waga;
string data_sprowadzenia;
};
void sortowanie() //bąbelkowe
{
int i, j, zamiana;
lista_zoo *tmp=new lista_zoo[sizeof(lista_zoo)];//wskaźnik pomocniczy
for(i=1; i
{
biezacy=tail;
poprzedni=biezacy->prev;
for(j=ilosc-1; j>=1; j--) //pętla porównująca sąsiednie elementy
{
zamiana=0; //w przypadku zamiany zmiana wartosci
if((biezacy->gromada)<(poprzedni->gromada))
{
zamiana=1;
if(j==ilosc-1)
{
tmp=poprzedni;
tail=poprzedni;
tail->next=NULL;
tail->prev=biezacy;
biezacy->next=tail;
biezacy->prev=tmp->prev;
}
if(j==1)
{
tmp=poprzedni;
poprzedni->next=biezacy->next;
poprzedni->prev=biezacy;
head=biezacy;
biezacy->prev=NULL;
biezacy->next=poprzedni;
}
else
{
tmp=poprzedni;
poprzedni->prev=biezacy;
poprzedni->next=biezacy->next;
biezacy->prev=tmp->prev;
biezacy->next=poprzedni;
}
}
if(zamiana==1)
{
poprzedni=biezacy->prev;
}
else
{
tmp=poprzedni;
biezacy=poprzedni;
poprzedni=tmp->prev;
}
}
}
}
LIsta dalej nie jest posortowana i mam posortowany pierwszy element poprawnie a reszta elementów to “stary” pierwszy element tablicy… Proszę o jakąś wskazówkę czy wszystkie mam źle czy tylko któreś konkretnie, czy też warunki w if są do bani.
To do czego sam doszedłem to fakt, że nie zamieniają się elementy i przy próbie wyświetlenia mam naruszenie ochrony pamięci ale nie wiem jak poprawić aby było dobrze bo ja nie widze błedu w zamianie
Co do STL to owszem, ale gdybym konstruował liste po raz n-ty a to jest moja pierwsza i chciałbym wiedzieć co się dzieje a nie korzystać z gotowców za pierwszym razem.