Advertisement
leo11

Untitled

May 21st, 2021 (edited)
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5.  
  6. class CustomStack {
  7. public:
  8.     CustomStack()
  9.     {
  10.         count = 0;
  11.         _size = 3;
  12.         mData = new int[_size];
  13.     }
  14.     ~CustomStack()
  15.     {
  16.         delete [] mData;
  17.     }
  18.  
  19.     void push(int val)
  20.     {
  21.         if (count == _size)
  22.         {
  23.             // _size += 5;
  24.             extend(5);
  25.         }
  26.         mData[count] = val;
  27.         ++count;
  28.         std::cout << "ok" << std::endl;
  29.     }
  30.  
  31.     void pop()
  32.     {
  33.         --count;
  34.         std::cout << mData[count] << std::endl;
  35.     }
  36.  
  37.  
  38.  
  39.  
  40.     // void push(int val)
  41.     // {
  42.     //     if (count == 0)
  43.     //     {
  44.     //         mData = new int[1];
  45.     //         mData[0] = val;
  46.     //         ++count;
  47.     //         std::cout << "ok" << std::endl;
  48.     //         return;
  49.     //     }
  50.     //     ++count;
  51.     //     int *cpyData = new int[count];
  52.     //     int i = 0;
  53.     //     for (i; i < count - 1; i++)
  54.     //         cpyData[i] = mData[i];
  55.     //     delete [] mData;
  56.     //     mData = cpyData;
  57.     //     mData[i] = val;
  58.     //     std::cout << "ok" << std::endl;
  59.     // }
  60.     // void pop()
  61.     // {
  62.     //     // --count;
  63.     //     if (count == 1)
  64.     //     {
  65.     //         int ret = mData[0];
  66.     //         delete [] mData;
  67.     //         std::cout << ret << std::endl;
  68.     //         return;
  69.     //     }
  70.     //     int *cpy = new int[count - 1];
  71.     //     int ret = mData[count - 1];
  72.     //     int i = 0;
  73.     //     for (i; i < count - 1; i++)
  74.     //         cpy[i] = mData[i];
  75.     //     delete [] mData;
  76.     //     mData = cpy;
  77.     //     --count;
  78.     //     std::cout << ret << std::endl;
  79.     // }
  80.     int top() const { return mData[count - 1]; }
  81.  
  82.     size_t size() const { return count; }
  83.  
  84.     bool empty() const { return (count > 0 ? false : true) ;}
  85.  
  86.     void extend(int n)
  87.     {
  88.         _size += n;
  89.         int *cpy = new int[_size];
  90.         for (int i = 0; i < count; i++)
  91.             cpy[i] = mData[i];
  92.         delete [] mData;
  93.         mData = cpy;
  94.     }
  95.  
  96. private:
  97.     int count;
  98.     size_t _size;
  99.  
  100. protected:
  101.     int* mData;
  102. };
  103.  
  104.  
  105.  
  106. int main() {
  107.  
  108.     CustomStack st;
  109.     std::string a;
  110.     int d;
  111.     // bool flag = 1;
  112.  
  113.  
  114.     while (1)
  115.     {
  116.         // scanf("%s", a);
  117.         std::cin >> a;
  118.         if (a == "cmd_push")
  119.         {
  120.             // scanf("%d", &d);
  121.             std::cin >> d;
  122.             st.push(d);
  123.         }
  124.         else if (a == "cmd_pop")
  125.         {
  126.             if (st.empty()){
  127.                 printf("error");
  128.                 return 0;
  129.             }
  130.             st.pop();
  131.         }
  132.         else if (a == "cmd_top")
  133.         {
  134.             if (st.empty()){
  135.                 printf("error");
  136.                 return 0;
  137.             }
  138.             printf("%d\n", st.top());
  139.         }
  140.         else if (a == "cmd_size")
  141.         {
  142.             printf("%ld\n", st.size());
  143.         }
  144.         else if (a == "cmd_exit")
  145.         {
  146.             printf("bye\n");
  147.             return 0;
  148.         }
  149.  
  150.     }
  151.  
  152.     return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement