Question: Please be a original answer and copy and pasted. Here is what I have for the beginning. #include #include using namespace std; //definition of the

Please be a original answer and copy and pasted. Here is what I have for the beginning.

#include #include using namespace std; //definition of the template class stackType template class stackType { private: int maxStackSize; int stackTop; Type *list;

public: void initializeStack(); bool isFullStack() const; bool isEmptyStack() const; void push(const Type&); void pop(); Type top() const; stackType(int = 20); ~stackType(); bool operator==(const stackType&); }; template void stackType::initializeStack() { stackTop = 0; } template bool stackType::isFullStack() const { return (stackTop == maxStackSize); } template bool stackType::isEmptyStack() const { return (stackTop == 0); } template void stackType::push(const Type& newItem) { if (!isFullStack()) { list[stackTop] = newItem; stackTop++; } // end if else cout << " \tCan not add to a full stack"; } template void stackType::pop() { if (!isEmptyStack()) stackTop--; else cout << " \tCan not remove from an empty stack"; } template Type stackType::top() const { assert(stackTop != 0); return list[stackTop - 1]; } template stackType::stackType(int stackSize) { if (stackSize <= 0) { cout << "Invalid size"; stackSize = 10; } // end if else maxStackSize = stackSize; stackTop = 0; list = new Type[maxStackSize]; } template stackType::~stackType() { delete[] list; } template bool stackType::operator== (const stackType& right) { if (this->stackTop != right.stackTop) return false; for (int i = 0; i < stackTop; i++) if (this->list[i] != right.list[i]) return false; return true; } //main function int main() { // let the user know about the program cout << " \tProgram to overload the realtional " << "operator == for the class stackType.";

// create objects of type stackType stackType s1(12); stackType s2(15);

// insert elements into the stacks cout << " \tInserting elements 5, 10, 15 ... " << "to both the stacks."; for (int i = 5; i < 50; i += 5) { s1.push(i); s2.push(i); } // end for //check and print whether the stacks are equal or not if (s1 == s2) cout << " \tBoth the stacks are equal"; else cout << " \tBoth the stacks are not equal"; // insert one more element into the second stack cout << " \tInserting element 11 to the second stack."; s2.push(11); //check and print whether the stacks are equal or not if (s1 == s2) cout << " \tBoth the stacks are equal"; else cout << " \tBoth the stacks are not equal"; cout << " \t"; system("pause"); return 0; }

a. Add the following operation to the class stackType: void reverseStack(stackType &otherStack); This operation copies the elements of a stack in reverse order onto another stack. Consider the following statements: stackType stack1; stackType stack2; The statement stack1.reverseStack(stack2); copies the elements of stack1 onto stack2 in reverse order. That is, the top element ofstack1 is the bottom element ofstack2, and so on. The old contents of stack2 are destroyed and stack1 is unchanged. b. Write the definition of the function template to implement the operation reverseStack.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!