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])