Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- class stack
- {
- public:
- long key;
- stack * prev;
- static stack* push(int x, stack *Mystack) //Принимаем элемент стека и указатель на стек, при этом говорим, что принимаемый указатель будет сам по себе указателем
- {
- if (Mystack->key == NULL)
- {
- Mystack->key = x;
- return Mystack;
- }
- stack *temp = new stack(); //Выделяем память для нового элемента
- temp->key = x; //Записываем в поле x принимаемый в функцию элемент x
- temp->prev = Mystack; //Указываем, что следующий элемент это предыдущий
- Mystack = temp; //Сдвигаем голову на позицию вперед
- return Mystack;
- }
- static stack* pop(stack *Mystack)
- {
- if (Mystack->prev != NULL)
- {
- stack *buffer = Mystack;
- Mystack = Mystack->prev;
- delete (buffer);
- return Mystack;
- }
- Mystack->key = NULL;
- return Mystack;
- }
- };
- int main()
- {
- ifstream in("stack.in");
- ofstream out("stack.out");
- long n;
- in >> n;
- char a;
- long g;
- stack *mystack = new stack();
- mystack->prev = NULL;
- mystack->key = NULL;
- for (int i = 0; i < n; i++)
- {
- if (i==0)
- {
- in >> a; in >> g;
- mystack=mystack->push(g, mystack);
- continue;
- }
- else
- {
- in >> a;
- if (a=='+')
- {
- in >> g;
- mystack = mystack->push(g, mystack);
- continue;
- }else
- if (a == '-')
- {
- out << mystack->key << endl;
- mystack = mystack->pop(mystack);
- continue;
- }
- }
- }
- in.close();
- out.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement