Usuwanie elementu z listy

Jachu
Użytkownik
Użytkownik
Posty: 42
Rejestracja: 5 lut 2008, o 08:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 7 razy
Pomógł: 2 razy

Usuwanie elementu z listy

Post autor: Jachu »

Mam problem z napisaniem funkcji, która usunie mi zaznaczony element z listy.
Napisałem coś takiego:

Kod: Zaznacz cały

int wytnij (struct element *wskazany)
    {
     if (wskazany->prev)
     wskazany->prev->next=wskazany->next;
     if (wskazany->next)
     wskazany->next->prev=wskazany->prev;
     int tmp = wskazany->wartosc;
     free(wskazany);
     return tmp;   
    };
Ale free nie usuwa mi elementu (ciągle mogę się do niego odwołać), a jedynie mi podstawia za wartość 0.
Poza tym nie wiem jak to się dzieje że wskaźnik po wycięciu elementu przesuwa się na poprzedni element (jak daje dodanie od wskazanego to mi robi tak jakby wskazany był tym poprzednim przed wyciętym)
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Usuwanie elementu z listy

Post autor: soku11 »

Skąd wiesz, że nie kasuje? Omija funkcję free? Jeśli nie i pod wskazany jest obiekt zaalokowany dynamicznie przez malloc, to na pewno kasowanie się odbywa.

Pozdrawiam.
ODPOWIEDZ