Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.35 KB | None | 0 0
  1. class stack
  2. {
  3.     int *arr;
  4.     int size;
  5.     int maxsize;
  6.  
  7.  
  8. public:
  9.  
  10.     void push(int x);
  11.     void push(int array[],int arrsize);
  12.  
  13.     void push(stack*,int );
  14.     int pop();
  15.     int top();
  16.  
  17.     stack();//default constructor
  18.     stack(int);//parameterized constructor
  19.     stack(const stack &obj);
  20.     void expand_mem();
  21.     void shrink_mem();
  22.  
  23.     ~stack();
  24.     int getsize(){return size;}
  25.     void setsize(int x){size=x;}
  26.  
  27.  
  28.  
  29.  
  30. };
  31. stack::stack()
  32. {
  33.     cout<<"Default Constructor Constructing..."<<endl;
  34.     size=0;
  35.     maxsize=5;
  36.     arr= new int[maxsize] ;
  37.     if (!arr)
  38.     {
  39.         cout << "Memory allocation failed"<<endl;
  40.     }
  41.  
  42.  
  43. }
  44. stack::stack(int maxsize)
  45. {
  46.     cout<<"Parameterized Constructor Constructing..."<<endl;
  47.     size=0;
  48.  
  49.     this->maxsize=maxsize;
  50.  
  51.     arr= new int[maxsize] ;
  52.     if (!arr)
  53.     {
  54.         cout << "Memory allocation failed"<<endl;
  55.     }
  56.  
  57.  
  58. }
  59. stack::stack(const stack &obj)
  60. {
  61.     cout<<"Copy Constructor Constructing..."<<endl;
  62.  
  63.     size=obj.size;
  64.     maxsize=obj.maxsize;
  65.     arr=new int[obj.size];
  66.     for(int i=0;i<size;i++)
  67.     {
  68.         arr[i]=obj.arr[i];
  69.     }
  70.  
  71. }
  72.  
  73.  
  74. void stack::push(int x)
  75. {
  76.     if(size==maxsize)
  77.     {
  78.         expand_mem();
  79.     }
  80.     arr[size]=x;
  81.     size++;
  82. }
  83. void stack::push(int array[],int arrsize)
  84. {
  85.     int temp_size;
  86.     temp_size=size;
  87.     for(int i=0;i<arrsize;i++)
  88.     {
  89.         if(size==maxsize)
  90.         {
  91.             expand_mem();
  92.  
  93.         }
  94.         arr[temp_size+i]=array[i];
  95.         //cout<<arr[temp_size+i]<<endl;
  96.         size++;
  97.     }
  98.  
  99.  
  100. }
  101. void stack::push(stack* tempStack,int stacksize)
  102. {
  103.     int temp_size;
  104.     temp_size=size;
  105.     for(int i=0;i<stacksize;i++)
  106.     {
  107.          if(size==maxsize)
  108.         {
  109.             expand_mem();
  110.  
  111.  
  112.         }
  113.         arr[temp_size+i]=tempStack->pop();
  114.         size++;
  115.     }
  116.  
  117.  
  118. }
  119. void stack::expand_mem()
  120. {
  121.     cout<<"Memory is expanding by 10 "<<endl;
  122.     maxsize=maxsize+10;
  123.     int *temp_arr;
  124.     temp_arr=new int[maxsize];
  125.     for(int i=0; i<maxsize; i++)
  126.         {
  127.             temp_arr[i]=0;
  128.         }
  129.  
  130.     for(int i=0; i<size; i++)
  131.         {
  132.             temp_arr[i]=arr[i];
  133.         }
  134.  
  135.         delete[] arr;
  136.         arr=new int[maxsize];
  137.         for(int i=0; i<maxsize; i++)
  138.         {
  139.             arr[i]=temp_arr[i];
  140.         }
  141.  
  142.         delete[] temp_arr;
  143.  
  144. }
  145.  
  146.  
  147. void stack::shrink_mem()
  148. {
  149.     cout<<"memory is shrinking by 10"<<endl;
  150.    maxsize=maxsize-10;
  151.     int *temp_arr;
  152.     temp_arr=new int[maxsize];
  153.     for(int i=0; i<maxsize; i++)
  154.         {
  155.             temp_arr[i]=0;
  156.         }
  157.     for(int i=0; i<size; i++)
  158.         {
  159.             temp_arr[i]=arr[i];
  160.         }
  161.         delete[] arr;
  162.         arr=new int[maxsize];
  163.         for(int i=0; i<maxsize; i++)
  164.         {
  165.             arr[i]=temp_arr[i];
  166.         }
  167.         delete[] temp_arr;
  168.  
  169. }
  170.  
  171.  
  172.  
  173. int stack::pop()
  174. {
  175.     if(size==0)
  176.     {
  177.  
  178.         return -1;
  179.     }
  180.     int popvalue;
  181.     popvalue=arr[size-1];
  182.     if((maxsize-size+1)>=10)
  183.        {
  184.  
  185.            shrink_mem();
  186.  
  187.        }
  188.        //cout<<size<<endl;
  189.  
  190.         size--;
  191.         //cout<<size<<endl;
  192.     return popvalue;
  193. }
  194. int stack::top()
  195. {
  196.     if(size==0)
  197.     {
  198.  
  199.         return -1;
  200.     }
  201.  
  202.     return arr[size-1];
  203. }
  204.  
  205.  
  206.  
  207.  
  208. stack::~stack()
  209.  {
  210.      delete[] arr;
  211.      cout<<"Memory has been dealocated :)"<<endl;
  212.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement