Question 4:By using the header files provided (myStack.h, stackADT.h, queueAsArray.h, and queueADT.h), write a
program that reads a line of text, changes each uppercase letter to lowercase, and places each letter
both in a queue and onto a stack. The program should then verify whether the line of text is a
palindrome (a set of letters or numbers that is the same whether read forward or backward). Submit the
cpp file, and copy and paste the screenshot of the output here.
Sample output:
myStack.h
//Header file: myStack.h
#ifndef H_StackType
#define H_StackType
#include
#include
#include “stackADT.h”
using namespace std;
template
class stackType: public stackADT
{
public:
const stackType& operator=(const stackType&);
//Overload the assignment operator.
void initializeStack();
//Function to initialize the stack to an empty state.
//Postcondition: stackTop = 0
bool isEmptyStack() const;
//Function to determine whether the stack is empty.
//Postcondition: Returns true if the stack is empty,
//
otherwise returns false.
bool isFullStack() const;
//Function to determine whether the stack is full.
//Postcondition: Returns true if the stack is full,
//
otherwise returns false.
void push(const Type& newItem);
//Function to add newItem to the stack.
//Precondition: The stack exists and is not full.
//Postcondition: The stack is changed and newItem
//
is added to the top of the stack.
Type top() const;
//Function to return the top element of the stack.
//Precondition: The stack exists and is not empty.
//Postcondition: If the stack is empty, the program
//
terminates; otherwise, the top element
//
of the stack is returned.
void pop();
//Function to remove the top element of the stack.
//Precondition: The stack exists and is not empty.
//Postcondition: The stack is changed and the top
//
element is removed from the stack.
stackType(int stackSize = 100);
//constructor
//Create an array of the size stackSize to hold
//the stack elements. The default stack size is 100.
//Postcondition: The variable list contains the base
//
address of the array, stackTop = 0, and
//
maxStackSize = stackSize.
stackType(const stackType& otherStack);
//copy constructor
~stackType();
//destructor
//Remove all the elements from the stack.
//Postcondition: The array (list) holding the stack
//
elements is deleted.
private:
int maxStackSize; //variable to store the maximum stack size
int stackTop;
//variable to point to the top of the stack
Type *list;
//pointer to the array that holds the
//stack elements
void copyStack(const stackType& otherStack);
//Function to make a copy of otherStack.
//Postcondition: A copy of otherStack is created and
//
assigned to this stack.
};
template
void stackType::initializeStack()
{
stackTop = 0;
}//end initializeStack
template
bool stackType::isEmptyStack() const
{
return(stackTop == 0);
}//end isEmptyStack
template
bool stackType::isFullStack() const
{
return(stackTop == maxStackSize);
} //end isFullStack
template
void stackType::push(const Type& newItem)
{
if (!isFullStack())
{
list[stackTop] = newItem; //add newItem to the
//top of the stack
stackTop++; //increment stackTop
}
else
cout