ВУЗ:
Составители:
Рубрика:
21
if(top != NULL)
{
OBJ* ptr = top->next;
printf("%s - deleted\n",top->name);
free(top);
top = ptr;
}
}
В данной функции сначала выполняется проверка указателя top. Если он не
равен значению NULL, то в стеке имеются объекты и самый верхний из них
следует удалить. Перед удалением инициализируется указатель ptr на
следующий объект для того, чтобы он был доступен после удаления верхнего.
Затем вызывается функция printf(), которая выводит на экран сообщение об
имени
удаленного объекта. Наконец, вызывается функция free() для удаления
самого верхнего объекта, а указатель top инициализируется на следующий
объект.
Для анализа работы данных функций введем еще одну вспомогательную
функцию, которая будет выводить имена объектов, находящихся в стеке.
void show_stack()
{
OBJ* ptr = top;
while(ptr != NULL)
{
printf("%s\n",ptr->name);
ptr = ptr->next;
}
}
Работа данной функции реализуется с помощью цикла while, который
работает до тех пор, пока указатель ptr не достигнет конца стека, т.е. пока не
будет равен значению NULL. Внутри цикла вызывается функция printf() для
вывода имени текущего объекта на экран и указатель ptr перемещается на
следующий объект.
Рассмотрим применение данных функций в функции main():
int main()
{
char str[100];
for(int i = 0;i < 5;i++) {
sprintf(str,"Object %d",i+1);
push(str);
}
show_stack();
while(top != NULL) pop();
return 0;
}
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »