Witam. Mam pewne zadanie do napisania lecz nie rozumiem do końca polecenia.
"Program ma umożliwiać porównanie co najmniej 3 różnych algorytmów sortujących zaimplementowanych na listach jednokierunkowych w tym algorytm QuickSort lub MergeSort. Zamiana elementów musi być realizowana przez zamianę wskaźników. Porównywane wartości to ilość zamian i ilość porównań wykonywana przez każdy z algorytmów. Dane do sortowania powinny być wczytywane z pliku, a posortowane zapisywane do pliku. Nazwy plików podaje użytkownik, w czasie działania programu lub jako jego parametry."
Nie rozumiem po co mam zaimplementować algorytmy na liście , i jak sortować za pomocą zamiany wskaźników (czy to po prostu jest straszna nazwa ,a sortowanie jest zwyczajne).
0
0
Algorytmy na liście masz zaimplementować właśnie po to żeby przepinać wskaźniki a nie kopiować wartości.
Zamiast zamieniać wartości na zasadzie:
int tmp = first;
first = second;
second = tmp;
Masz robić
// zapamiętujesz sobie pomiędzy jakimi elementami w liście był pierwszy obiekt
int* prev = prev(first);
int* next = first.next;
// podmieniasz go z drugim obiektem w liście
prev(second) -> next = first;
first->next = second->next;
// wpisujesz drugi obiekt w miejsce pierwszego
prev->next = second
second->next = next;
0
Czyli jak zrozumialem , odczytuje plik , wrzuca jego elementy do listy , sortuje je a potem zapisuje w pliku , tak ?
0
Prawie, bo tak trzy razy dal różnych algorytmów.
0
Czyli trzy listy. Okej dzięki.
0
Nie, lista jedna.
0
No dobra , rozumiem.Tylko jednego nie kminie , czym są dane wczytane z pliku ? Jeżeli bedzie tam troche cyfr i troche wyrazów to w jaki sposob ma to posortować?
0
Albo zapytaj prowadzącego albo sam załóż jakieś sensowne granice.