[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Уничтожение узла - Пример
Эта программа уничтожает данные, содержащиеся в узле с указателем p.
Данные в узле с указателем q копируются в узел с указателем p. Потом
узел q уничтожается. Шаги работы программы пронумерованы справа.
/* delete node "p" in list "head" */
void delete(struct node *p)
{
struct node *q;
q = p->next; (1)
p->data = q->data; (2)
p->next = q->next; (3)
free (q); (4)
}
Чтобы этот алгоритм уничтожения работал со всеми узлами, включая
последний в списке, пустой список должен содержать голову head и узел
с нулевым указателем в поле next. Другими словами, последний узел
является ограничителем и его нельзя уничтожить. Поэтому в программу
надо добавить следующую проверку:
if ( p->next == NULL ) return;
УНИЧТОЖЕНИЕ УЗЛА - ПРИМЕР
/* delete node "p" in list "head" */
void delete(struct node *p)
{
struct node *q;
q = p->next;
p->data = q->data;
p->next = q->next;
free (q);
}