In: Computer Science
C++ please
Fill in for the functions for the code below. The functions will implement an integer stack using deques ONLY. It is possible to use only one deque but using two deques also works. Additional public helper functions or private members/functions can be used. The Stack class will be instantiated via a pointer and called as shown below:
Stack *ptr = new Stack();
ptr->push(value);
int pop1 = ptr->pop();
int pop2 = ptr->pop();
bool isEmpty = ptr->empty();
class Stack{
public:
// Default Constructor
Stack() {// ... }
// Push integer n onto top of stack
void push(int n) {// ... }
// Pop element on top of stack
int pop() {// ... }
// Get the top element but do not pop it (peek at top of stack)
int top() {// ... }
// Return whether the stack is empty or not
bool empty() {// ... }
};
ANS:
#pragma once
class Stack
{
private:
int* stackArray;
int StackSize;
int top;
public:
Stack(int);
~Stack();
void push(int);
void pop(int&);
bool isFull();
bool isEmpty();
int tops();
void printStack();
};
//STACK CPP AND MAIN
#include "Stack.h"
#include<iostream>
using namespace std;
Stack::Stack(int len)
{
stackArray = new int[len];
StackSize = len;
top = -1;
}
Stack::~Stack()
{
delete[] stackArray; // deleteing stack dynamic array
after program completion
}
void Stack::push(int item)
{
if (isFull())
{
cout << "Stack is Full"
<< endl;
}
else
{
top += 1;
stackArray[top] = item;
cout << "Element Added in
stack" << endl;
}
}
void Stack::pop(int& num)
{
if (isEmpty())
{
cout << "Stack is Empty"
<< endl; // If empty then only cout else pop
}
else
{
num = stackArray[top];
top--;
}
}
bool Stack::isFull()
{
if (top == StackSize - 1)
{
return true; // If top is equal to
end of array then it is full so return true
}
else
{
return false;
}
}
bool Stack::isEmpty()
{
if (top == -1)
{
return true; //if top=-1 it means
no element in stack so empty
}
else
{
return false;
}
}
int Stack::tops()
{
if (isEmpty())
{
cout << "Stack is Empty"
<< endl;
return -1;
}
else
{
return stackArray[top];
}
}
void Stack::printStack()
{
cout << "Visiting Stack and printing each
element" << endl;
int element;
for (int i = 0; i < StackSize; i++)
{
pop(element);
cout << "Element#" << i
<< "=" << element << endl;
}
}
int main()
{
Stack* ptr = new Stack(3);
ptr->push(2);
ptr->push(3);
ptr->push(6);
//ptr->printStack();
int pop1;
ptr->pop(pop1);
int pop2;
ptr->pop(pop2);
cout << "Pop1:" << pop1 << " POP2:" << pop2 << endl;
}
Comment down for any queries
Please give a thumbs up if you are satisfied with answer
:)