sortowanie bąbelkowe listy jednokierunkowej

0

Witam, męczę się z posortowaniem listy jednokierunkowej.
Spędziłem juz kilka godzin szukając różnych rozwiązań i nic... ciągle nie sortuje.

 
void sort2()
{
char t[10];
char d[10];
char z,x;
struk_baza *a, *b, *c, *temp;
a=pierwszy;

 for(int i=0; i<50; i++)
	{
	 a=pierwszy;
	 b=pierwszy->next;
   	 c=b->next;
	 temp=c;

while(c->next!=NULL)
	{
//pewnie jest jakaś metoda dla sprawdzania liter, jednak pierwsze co przyszło mi do głowy to zamiana na ASCII.

strcpy(t,b->imie);
strcpy(d,c->imie);
z=t[0];
x=d[0];

if(int(x)<int(z))
{
				temp=b->next;
				b->next=temp->next;
				temp->next=b;
				a->next=c;
				temp=c;

				c=a->next->next->next;  // aktualizujemy wskazniki
				a=a->next;


			}
			else if(c->next)
			{
				a=a->next;
				b=b->next;
				c=c->next;
			}
		}
       }
}
0

może jakaś jaśniejsza wskazówka?

0

wystarczy takie coś:

 
#include <forward_list>
#include <iostream>

int main() {
    std::forward_list<int> flist;
    for(int i = 0; i < 10; i++) {
        flist.push_front(i);
    }
    flist.sort();
    for(auto a = flist.begin(); a != flist.end(); a++, std::cout <<"\n") {
        std::cout << *a;
    }
}
0

można troszkę jaśniej? dopiero zaczynam programować i nie za bardzo rozumiem co tam jest napisane :P wolałbym jakiś klasyczny sposób.

0

@_13th_Dragon sugerowałem się algorytmem, pierwsza pętla wykonuje się tyle razy ile jest elementów na liście a ta druga wyciąga kolejne elementy na koniec.

0

@_13th_Dragon myslalem, że tak będzie łatwiej skoro znam ilosc elementow listy. Poza tym nie wydaje mi się żeby to byl kluczowy problem skoro funkcja nie zamienia nawet jednego elementu ;/

0

pomoże ktoś? na jutro muszę to mieć...

0

nie chodzi mi o kod tylko o porade

0
pabblo napisał(a):

nie chodzi mi o kod tylko o porade
Dostałeś kilka porad, ale do nich nie dostosowałeś się.

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