Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3.  
  4. const int с = 2;
  5.  
  6. struct vector
  7. {
  8.     int size, n;
  9.     int* vec;
  10.  
  11.     void init()
  12.     {
  13.         size = 1;
  14.         n = 0;
  15.         vec = new int[size];
  16.     }
  17.  
  18.     void del()
  19.     {
  20.         delete[] vec;
  21.     }
  22.  
  23.     /*void empty()
  24.     {
  25.         for (int i = 0; i < size; i++)
  26.             vec[i] = 0;
  27.     }
  28.  
  29.     void set(int i, int x)
  30.     {
  31.         vec[i] = x;
  32.     }*/
  33.  
  34.     int get(int i)
  35.     {
  36.         return vec[i];
  37.         n--;
  38.        
  39.         if (n < size / c)
  40.             shrink();
  41.     }
  42.  
  43.     void add(int x)
  44.     {
  45.         if (n > size)
  46.         {
  47.             int* new_vec = new int[с * size];
  48.  
  49.             for (int i = 0; i < size; i++)
  50.                 new_vec[i] = vec[i];
  51.  
  52.             del();
  53.             vec = new_vec;
  54.         }
  55.         vec[n] = x;
  56.         n++;
  57.     }
  58.  
  59.     int shrink()
  60.     {
  61.         int* new_vec = new int[size / c];
  62.  
  63.         for (int i = 0; i < size / c; i++)
  64.             new_vec[i] = vec[i];
  65.  
  66.         del();
  67.         vec = new_vec;
  68.     }
  69. };
  70.  
  71. struct stack
  72. {
  73.     vector vec;
  74.  
  75.     void init()
  76.     {
  77.         vec.init();
  78.     }
  79.  
  80.     void del()
  81.     {
  82.         vec.del();
  83.     }
  84.  
  85.     void push(int x)
  86.     {
  87.         vec.add(x);
  88.     }
  89.     int pop()
  90.     {
  91.         return vec.get(vec.n);
  92.     }
  93. };
  94.  
  95. int main()
  96. {
  97.     std::fstream input("stack1.in");
  98.     std::fstream output("stack1.out");
  99.  
  100.     stack s;
  101.     s.init();
  102.     int m;
  103.     input >> m;
  104.     std::string command;
  105.  
  106.     for (int i = 0; i < m; i++)
  107.     {      
  108.         input >> command;
  109.        
  110.         if (command == "-") output << s.pop() << "\n";
  111.         else
  112.         {
  113.             std::string t;
  114.             input >> t;
  115.             s.push(atoi(t.c_str()));
  116.         }
  117.     }
  118.     s.del();
  119.  
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement