C/Typy złożone: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
→Implementacja listy: dwukierunkowa lista |
→Implementacja listy: lista dwukierunkowa |
||
Linia 510:
Możemy jeszcze pomyśleć, jak można by wykonać usuwanie elementu z listy. Najprościej byłoby zrobić:
wsk->next = wsk->next->next
ale wtedy element, na który wskazywał wcześniej <tt>wsk->next</tt> przestaje być dostępny i zaśmieca pamięć. Trzeba go usunąć. Zauważmy, że aby usunąć element potrzebujemy wskaźnika do '''elementu go poprzedzającego''' (po to, by nie rozerwać listy). Lista jest dwukierunkowa, więc elementy znają swoje poprzedniki. Popatrzmy na poniższą funkcję:
<source lang="c">
typedef struct lista
Linia 520:
void usun_z_listy(List *lista, void* element)
{
if(lista == NULL) return;
free(lista);
}
</source>
|