Функция удаления элемента из стека:
void del (STACK **top) { STACK *old_item = *top; if(*top) { *top =(*top)->next; free(old_item); } } | //*top – указатель на вершину стека //old_item – указатель на удаляемый элемент; //если стек не пуст (*top!=NULL) //переносим указатель *top на следующий элемент стека, вершиной стека становится предыдущий элемент последовательности //уничтожаем элемент old_item |
Пример. Пусть из стека, состоящего из элементов (‘a’,’b’,’c’) (элементы указаны в порядке их добавления в стек), представленного в программе переменной s, необходимо удалить элемент ‘c’. Для этого вызывается функция del:
del(&s);
На рис. 4 показано происходящее после каждого шага изменения.
Рис. 4 – Удаление элемента из стека