logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dodanie elementu z posortowaniem listy dwukierunkowej

NeyOo 10 Gru 2020 22:22 852 4
REKLAMA
  • #1 19105054
    NeyOo
    Poziom 4  
    Posty: 5
    Witam, mam taki problem, chodzi o funkcje dodajDoListyPosortowanej, chciałbym aby sortowała ona liste i dodatkowo dodawała do niej element tak aby pozostała posortowana, czyli żeby element trafiał w odpowiednie miejsce, niestety element dodaje się na początek, a lista nie sortuje się tak jak powinno czy ktoś mógłby nakierować co robie nie tak lub wskazać w którym miejscu jest błąd.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 19106686
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    A gdzie ta posortowana lista? Dodajesz 45 do listy, która na początku ma 54367. Dodawana 45 jest mniejsza, więc wstawi przed nią.
  • REKLAMA
  • #3 19108071
    NeyOo
    Poziom 4  
    Posty: 5
    Ogólnie po skompilowaniu całego kodu lista nie jest posortowana, niektóre wartości zamienią się miejscami ale lista nie jest posortowana, wiem że jest mniejsze więc tak powinno wstawić, to się zgadza ale pozostałe wartości nie układają się w takiej kolejności jakbym chciał.
  • REKLAMA
  • #4 19108702
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    To znaczy w jakiej? Bo robisz funkcję dodającą wartość w posortowaną listę i używasz jej na nieposortowanej liście. Teraz mówisz, że w ogóle nie o to chodzi, tylko o w ogóle tworzenie listy?
  • #5 19110095
    _jta_
    Specjalista elektronik
    Posty: 48926
    Pomógł: 3202
    Ocena: 4214
    Sortowanie można zrobić poprzez wstawianie we właściwe miejsce kolejno wszystkich elementów oryginalnej listy do listy początkowo pustej. Nie jest to najszybsze, ale działa. W miarę szybkie jest sortowanie przez łączenie list posortowanych (i może najszybsze z tego, co da się użyć, bo szybkie metody sortowania tablic do list się nie nadają).

    W funkcji dodajNaKoniec() jest błąd - pomoc -> pop = glowa; - zamiast tego powinno być pomoc -> pop = suwak;.
REKLAMA