Задача
Реализуйте структуру данных «стек». Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку.Возможные команды для программы:
- push n — Добавить в стек число n (значение n задается после команды). Вывести ok.
- pop — Удалить из стека последний элемент. Программа должна вывести его значение.
- back — Вывести значение последнего элемента, не удаляя его из стека.
- size — Вывести количество элементов в стеке.
- clear — Очистить стек и вывести ok.
- exit — Вывести bye и завершить работу.
Входные данные
Каждая строка содержит одну команду.
Выходные данные
Для каждой команды вывести в отдельной строке соответствующий результат.
Тесты
входные данные | выходные данные |
push 2 | ok |
push 3 | ok |
push 5 | ok |
baсk | 5 |
sizе | 3 |
pop | 5 |
sizе | 2 |
push 7 | ok |
pop | 7 |
clear | ok |
size | 0 |
exit | bye |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#include <iostream> #include <cstring> #include <stack> using namespace std; stack<int> s; char str[100]; int n; int main(void) { while(scanf("%s",&str)) { if (strcmp(str,"push") == 0) { cin>>n;; s.push(n); cout<<"ok"<<"\n"; } else if (strcmp(str,"pop") == 0) { cout<<s.top()<<"\n"; s.pop(); } else if (strcmp(str,"back") == 0) { cout<<s.top()<<"\n";; } else if (strcmp(str,"size") == 0) { cout<<s.size()<<"\n"; } else if (strcmp(str,"clear") == 0) { while(!s.empty()) s.pop(); cout<<"ok"<<"\n"; } else { cout<<"bye"<<"\n"; break; } } return 0; } |
Решение задачи
Для каждой команды вводимой в программу реализуем функцию, которую она должна выполнять в стеке.
Ссылки
Протестируйте программу на последовательности строк, а не на одиночных строках. В алгоритме к ветке else должен относиться не только один if.
У вас e-olymp написано с ошибкой. Уберите кирилицу из постоянных ссылок.