Siedzę nad tym już zbyt wiele godzin, "trochę" mnie to przerasta.
Mam taką prostą listę jednokierunkową:
struct Node {
Node * next;
int data1, data2, data3, data4, data5;
}
Dane do listy wczytuję z pliku .txt.
Mam więc już wypełnioną danymi listę i teraz: muszę ją posortować według data1
, później według data2
(w taki sposób, żeby nadal było posortowane według data1
), później według data3
w taki sposób aby nadał było posortowane według data2
i data3
, i tak dalej aż do data5
.
Przykładowa zawartość .txt:
<data1> <data2> <data3> <data4> <data5>
6 1 1 1 1
5 2 6 3 2
1 3 1 1 5
5 2 6 3 8
1 2 1 1 4
2 1 5 3 7
Output powinien być:
1 2 1 1 4
1 3 1 1 5
2 1 5 3 7
5 2 6 3 2
5 2 6 3 8
6 1 1 1 1
Czyli każda kolumna posortowana tak, aby zachować sortowanie poprzedniej kolumny.
Żeby było kolorowiej nie mogę użyć containerów STL
gdyby miały się gdzieś tu przydać.
Posortowałem całą listę według data1
, i co dalej? Gdybym teraz zaczął sortować według data2
, to całe sortowanie według data1
by się popsuło.
Oczywiście googlowałem, dużo propozycji pojawiało się o std::stable_sort
, ale wszystkie przykłady były pokazane na np. vectorach. Kompletnie nie wiem jak to przełożyć na "customowe" struktury danych. Coś też o lambda
znalazłem, ale to koncepcyjnie jeszcze trudniejsze dla mnie, nigdy wcześniej tego nie używałem.
Macie jakieś propozycje lub przykłady jak to zaimplementować?