Można go uruchomić za pomocą debuggera lub można go uruchomić przez to trochę wetware wewnątrz czaszki - obie pokaże, że działa dobrze. Na przykład, zacznijmy z listy:
head(47) -> [47]single_node -> [NULL]end-of-list.
Uruchamianie tej listy poprzez swoje wypowiedzi:
ptr = head
zestawy ptr
do 47.
head
jest niezerowe więc wprowadzić pętlę.
head = head->next
ustawia head
na NULL.
delete ptr
usunie single_node
.
ptr = head
ustawia ptr
na NULL.
head
jest teraz NULL (0), więc zakończ pętlę.
W tym miejscu usunięto jedyny wpis z listy, a head
jest teraz ustawiony na NULL. To wszystko, co musisz zrobić.
Możesz zrobić coś podobnego z dłuższą listą lub pustą listą, okaże się, że nadal jest w porządku (nie ma prawdziwej różnicy między listą jednoelementową a listą składającą się z pięćdziesięciu elementów).
Tak na marginesie, nie jestem wielkim fanem leczenia wskazówek jak logicznych - Wolałbym napisać go jako coś w rodzaju:
for (ptr = head; head != NULL; ptr = head)
To sprawia, że kod czytać lepiej moim zdaniem i don Naprawdę poświęcasz jakąkolwiek wydajność (chyba że masz nieumarły kompilator). Ale to kwestia gustu.
Re Twój komentarz:
Rzecz, która dotyczy mnie jest dotarcie do ostatniego węzła. Warunek "głowa" powinien sprawdzić, czy nie jest pusty, ale nie jestem pewien, czy to zadziała.
To zadziała. Wartość zero będzie traktowana jako fałsz, więc przekonasz się, że nigdy nie odrzucasz głowy-> dalej, gdy głowa ma wartość NULL, po prostu dlatego, że opuściłeś ciało pętli przed tym punktem (lub nawet nie wprowadziłeś ciała, jeśli lista jest pusta).
Każda inna wartość wskaźnika będzie traktowana jako prawdziwa, a użytkownik wprowadzi lub będzie kontynuował treść pętli.
Dlaczego nie spróbować uruchomić kodu za pomocą debuggera, aby sprawdzić, czy działa? – Manuel
@Manuel, ponieważ debuggery na niektórych platformach nie są zintegrowane i są trudne w użyciu? –
Wiem, że zostanę postrzelony za to (ktoś zawsze to robi, ale jestem uważny). head jest zmienną składową, naprawdę powinieneś mieć konwencję nazewnictwa dla zmiennych członkowskich, jak m_head lub head_ – pm100