Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. #include<iostream>
  2. #include<stack>
  3. #include<vector>
  4. using namespace std;
  5. int main() {
  6. stack<int> stack; //усложним задачу: будем удалять конкретный элемент стека
  7. for (int i = 0; i < 5; i++)
  8. stack.push(i); //заполним стек числами от 1 до 5. Допустим, хотим удалять число 2
  9. vector<int> v; //для этого создадим вектор(контейнер)
  10. while (!stack.empty()) { // пока стек не пуст
  11. if (stack.top() != 2) {//если верхний элtмент не равен 2,
  12. v.push_back(stack.top()); // то добавляем в вектор v данный верхний элемент
  13. }
  14. stack.pop(); // удаляем данный верхний элемент из стека
  15. }
  16. // теперь стек пуст, а векторе все элементы кроме 2. При этом важно, что первый элемент вектора есть 5(последний элемент стека)
  17. // чтобы сохранить исходную последовательность в стеке
  18. // необходимо помещать элементы в стек, начиная с конца вектора
  19. for (int i = v.size() - 1; i >= 0; i--) { //v.size() - 1 - это индекс последнего элемента в векторе, так как нумерация индексов начинается с нуля
  20. stack.push(v[i]);
  21. }
  22. while (!stack.empty()) { //пока стек не пуст,
  23. cout << stack.top() << ' ';
  24. stack.pop(); // удаление элемента происходит для того, чтобы потом вывелось препоследнее число и тд;
  25. }
  26. system("pause");
  27. return 0;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement