Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class stack
- {
- int *arr;
- int size;
- int maxsize;
- public:
- void push(int x);
- void push(int array[],int arrsize);
- void push(stack*,int );
- int pop();
- int top();
- stack();//default constructor
- stack(int);//parameterized constructor
- stack(const stack &obj);
- void expand_mem();
- void shrink_mem();
- ~stack();
- int getsize(){return size;}
- void setsize(int x){size=x;}
- };
- stack::stack()
- {
- cout<<"Default Constructor Constructing..."<<endl;
- size=0;
- maxsize=5;
- arr= new int[maxsize] ;
- if (!arr)
- {
- cout << "Memory allocation failed"<<endl;
- }
- }
- stack::stack(int maxsize)
- {
- cout<<"Parameterized Constructor Constructing..."<<endl;
- size=0;
- this->maxsize=maxsize;
- arr= new int[maxsize] ;
- if (!arr)
- {
- cout << "Memory allocation failed"<<endl;
- }
- }
- stack::stack(const stack &obj)
- {
- cout<<"Copy Constructor Constructing..."<<endl;
- size=obj.size;
- maxsize=obj.maxsize;
- arr=new int[obj.size];
- for(int i=0;i<size;i++)
- {
- arr[i]=obj.arr[i];
- }
- }
- void stack::push(int x)
- {
- if(size==maxsize)
- {
- expand_mem();
- }
- arr[size]=x;
- size++;
- }
- void stack::push(int array[],int arrsize)
- {
- int temp_size;
- temp_size=size;
- for(int i=0;i<arrsize;i++)
- {
- if(size==maxsize)
- {
- expand_mem();
- }
- arr[temp_size+i]=array[i];
- //cout<<arr[temp_size+i]<<endl;
- size++;
- }
- }
- void stack::push(stack* tempStack,int stacksize)
- {
- int temp_size;
- temp_size=size;
- for(int i=0;i<stacksize;i++)
- {
- if(size==maxsize)
- {
- expand_mem();
- }
- arr[temp_size+i]=tempStack->pop();
- size++;
- }
- }
- void stack::expand_mem()
- {
- cout<<"Memory is expanding by 10 "<<endl;
- maxsize=maxsize+10;
- int *temp_arr;
- temp_arr=new int[maxsize];
- for(int i=0; i<maxsize; i++)
- {
- temp_arr[i]=0;
- }
- for(int i=0; i<size; i++)
- {
- temp_arr[i]=arr[i];
- }
- delete[] arr;
- arr=new int[maxsize];
- for(int i=0; i<maxsize; i++)
- {
- arr[i]=temp_arr[i];
- }
- delete[] temp_arr;
- }
- void stack::shrink_mem()
- {
- cout<<"memory is shrinking by 10"<<endl;
- maxsize=maxsize-10;
- int *temp_arr;
- temp_arr=new int[maxsize];
- for(int i=0; i<maxsize; i++)
- {
- temp_arr[i]=0;
- }
- for(int i=0; i<size; i++)
- {
- temp_arr[i]=arr[i];
- }
- delete[] arr;
- arr=new int[maxsize];
- for(int i=0; i<maxsize; i++)
- {
- arr[i]=temp_arr[i];
- }
- delete[] temp_arr;
- }
- int stack::pop()
- {
- if(size==0)
- {
- return -1;
- }
- int popvalue;
- popvalue=arr[size-1];
- if((maxsize-size+1)>=10)
- {
- shrink_mem();
- }
- //cout<<size<<endl;
- size--;
- //cout<<size<<endl;
- return popvalue;
- }
- int stack::top()
- {
- if(size==0)
- {
- return -1;
- }
- return arr[size-1];
- }
- stack::~stack()
- {
- delete[] arr;
- cout<<"Memory has been dealocated :)"<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement