10608. Стек push / pop
Промоделируйте следующие операции
со стеком:
·
push x –
вставить значение x в стек;
·
pop –
удалить элемент из вершины стека;
·
top –
вывести элемент на вершине стека (не удаляя его);
Все операции pop корректны.
Если стек пустой, при поступлении
команды top ничего выводить не следует.
Пример
входа |
Пример
выхода |
push 5 push 2 top pop top pop top push 7 top |
2 5 7 |
структуры
данных - стек
В задаче следует
промоделировать работу стека. При поступлении команды top следует проверить, не является ли стек
пустым. Если стек пустой, то ничего не выводим.
Реализация алгоритма
Объявим стек s.
stack<int> s;
Читаем операции со стеком до конца файла.
while (cin >> op)
{
Обрабатываем операцию push.
if (op == "push")
{
cin >> x;
s.push(x);
}
else
Обрабатываем операцию pop.
if (op == "pop")
s.pop();
else
Если стек не пустой, то выводим его верхний элемент.
if (!s.empty())
printf("%d\n", s.top());
}
Python реализация – try
Объявим стек s.
s = []
Читаем операции со стеком до конца
файла.
while True:
try:
op, *data = input().split()
Обрабатываем операцию push.
if op == "push":
x = int(data[0])
s.append(x)
Обрабатываем операцию pop.
elif op == "pop":
s.pop()
Если стек не пустой, то выводим его
верхний элемент.
elif s:
print(s[-1])
При достижении конца файла выходим из
бесконечного цикла.
except EOFError:
break
Python реализация – sys
Объявим стек s.
import sys
s = []
Читаем операции со стеком до конца
файла.
for line in sys.stdin:
op, *data = line.split()
Обрабатываем операцию push.
if op == "push":
x = int(data[0])
s.append(x)
Обрабатываем операцию pop.
elif op == "pop":
s.pop()
Если стек не пустой, то выводим его
верхний элемент.
elif s:
print(s[-1])