Advertisement
Guest User

Untitled

a guest
Oct 21st, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class stack
  8. {
  9. public:
  10.     long key;
  11.     stack * prev;  
  12.     static stack* push(int x, stack *Mystack) //Принимаем элемент стека и указатель на стек, при этом говорим, что принимаемый указатель будет сам по себе указателем
  13.     {
  14.         if (Mystack->key == NULL)
  15.         {
  16.             Mystack->key = x;
  17.             return Mystack;
  18.         }
  19.         stack *temp = new stack(); //Выделяем память для нового элемента
  20.         temp->key = x; //Записываем в поле x принимаемый в функцию элемент x
  21.         temp->prev = Mystack; //Указываем, что следующий элемент это предыдущий
  22.         Mystack = temp; //Сдвигаем голову на позицию вперед
  23.         return Mystack;
  24.     }
  25.     static stack* pop(stack *Mystack)
  26.     {
  27.         if (Mystack->prev != NULL)
  28.         {
  29.             stack *buffer = Mystack;
  30.             Mystack = Mystack->prev;
  31.             delete (buffer);
  32.             return Mystack;
  33.         }
  34.         Mystack->key = NULL;               
  35.         return Mystack;
  36.     }
  37. };
  38.  
  39. int main()
  40. {
  41.     ifstream in("stack.in");
  42.     ofstream out("stack.out");
  43.     long n;
  44.     in >> n;   
  45.     char a;
  46.     long g;
  47.     stack *mystack = new stack();
  48.     mystack->prev = NULL;
  49.     mystack->key = NULL;
  50.  
  51.     for (int i = 0; i < n; i++)
  52.     {
  53.         if (i==0)
  54.         {
  55.             in >> a; in >> g;                      
  56.             mystack=mystack->push(g, mystack);
  57.             continue;
  58.         }
  59.         else
  60.         {
  61.             in >> a;
  62.             if (a=='+')
  63.             {      
  64.                 in >> g;
  65.                 mystack = mystack->push(g, mystack);
  66.                 continue;
  67.             }else
  68.             if (a == '-')
  69.             {      
  70.                 out << mystack->key << endl;
  71.                 mystack = mystack->pop(mystack);               
  72.                 continue;
  73.             }
  74.         }
  75.     }
  76.     in.close();
  77.     out.close();
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement