Wpis z mikrobloga

@pantera49: Pierwsze co mi się rzuciło w oczy:

44 head = p;


Nadpisujesz lokalny wskaźnik, bo wskaźnik jest przekazywany przez wartość. Poprawnie powinieneś dodawać za
  • Odpowiedz
@pantera49: Jeśli wpiszesz zamiast, to ta funkcja będzie dodawać za headem. Jeśli koniecznie chcesz podmienić heada, to albo przekaż wskaźnik do wskaźnika, albo po prostu zwróć nowy head (czyli p).
  • Odpowiedz
@pantera49: przyjrzałem się bliżej - chciałem napisać, że płaczę po cichu

może być więcej problemów: nie dealokujesz wszystkiego co zaalokowałeś (szczególnie pod koniec programu), po usunięciu wskaźnika nie zawsze ustawiasz NULL, insert_before nie robi tego co powinien, gubisz wskaźniki, nie wszędzie jest sprawdzenie na NULL, numerujesz od 1, nie zawsze piszesz klamry a zmienne oznaczasz zazwyczaj jedną literą

tak tylko - wewnętrzny mus kazał mi to napisać, nienawidzę siebie
  • Odpowiedz
@pantera49: wciąż nie niszczysz listy L pod koniec programu - jest wyciek, brakuje czegoś jak ldestroy z zawołaniem free na każdym zaalokowanym elemencie (bo listę L wypełniasz przez lpushback które wołają malloc, C nie ma garbage collectora)

zawołaj insert
before na headzie - przesyłasz adres lokalnego wskaźnika, co gdy nie znajdzie e wewnątrz listy ?
lremove: modyfikujesz lokalny wskaźnik head + przesyłasz adres lokalnego wskaźnika dalej
(ogólnie co do tych wskaźników - trzeba spojrzeć na nie jakby miały dwa adresy: adres zmiennej typu wskaźnikowego i
  • Odpowiedz