Funkcja scalająca trzy listy C++
Ostatnio zmodyfikowano 2019-08-14 19:37
bombix Temat założony przez niniejszego użytkownika |
Funkcja scalająca trzy listy C++ » 2019-08-14 18:44:09 Cześć, w ramach ćwiczeń z ASD trafiłem na takie zadanie:
Dane są trzy posortowane listy zbudowane z elementów struct node { int val; node* next;}. Proszę zaimplementować funkcję node* merge3(node* l[3]); scalającą trzy listy i zwracającą wskaźnik do powstałej listy.
Ma ktoś pomysł jak to zrobić? |
|
pekfos |
» 2019-08-14 18:59:49 Listy są posortowane, powiedzmy rosnąco, więc pierwszy element listy jest najmniejszy. Pierwszy element docelowej listy, to najmniejszy element z pierwszych elementów tych 3 list. Funkcja dla 2 list jest trywialna w implementacji, potem wystarczy jej użyć 2 razy by scalić 3 listy. |
|
bombix Temat założony przez niniejszego użytkownika |
» 2019-08-14 19:16:19 A jakbym to zrobił od razu dla trzech list? byłoby więcej warunków, ale zawsze funkcja byłaby wywołana tylko raz. |
|
pekfos |
» 2019-08-14 19:37:58 To że zadanie mówi o napisaniu funkcji nie znaczy, że możesz napisać tylko tą jedną funkcję. Algorytm jest identyczny dla 2 i N list, ale dla dwóch logika jest prostsza. Jak chcesz od razu robić dla 3, to równie dobrze możesz robić dla dowolnej liczby list. |
|
« 1 » |