Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stack>
- #include<vector>
- using namespace std;
- int main() {
- stack<int> stack; //усложним задачу: будем удалять конкретный элемент стека
- for (int i = 0; i < 5; i++)
- stack.push(i); //заполним стек числами от 1 до 5. Допустим, хотим удалять число 2
- vector<int> v; //для этого создадим вектор(контейнер)
- while (!stack.empty()) { // пока стек не пуст
- if (stack.top() != 2) {//если верхний элtмент не равен 2,
- v.push_back(stack.top()); // то добавляем в вектор v данный верхний элемент
- }
- stack.pop(); // удаляем данный верхний элемент из стека
- }
- // теперь стек пуст, а векторе все элементы кроме 2. При этом важно, что первый элемент вектора есть 5(последний элемент стека)
- // чтобы сохранить исходную последовательность в стеке
- // необходимо помещать элементы в стек, начиная с конца вектора
- for (int i = v.size() - 1; i >= 0; i--) { //v.size() - 1 - это индекс последнего элемента в векторе, так как нумерация индексов начинается с нуля
- stack.push(v[i]);
- }
- while (!stack.empty()) { //пока стек не пуст,
- cout << stack.top() << ' ';
- stack.pop(); // удаление элемента происходит для того, чтобы потом вывелось препоследнее число и тд;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement