Question
I'm having trouble with this question for C++: Two stacks of the same type are the same if they have the same number of elements
I'm having trouble with this question for C++:
Two stacks of the same type are the same if they have the same number of elements and their elements at the corresponding positions are the same. Overload the relational operator == for the class stackType that returns true if two stacks of the same type are the same; it returns false otherwise. Also, write the definition of the function template to overload this operator.
It requires the use of a main function (main.cpp) and two header files (myStack.h and stackADT.h) and I can not seem to figure out how to solve this problem. Thank you in advance.
================
main.cpp template
#include
using namespace std; int main() { stackType
stack1.initializeStack(); stack1.push(23); stack1.push(45); stack1.push(38);
stack2 = stack1;
if (stack1 == stack2) cout << "stack1 and stack2 are identical" << endl; else cout << "stack1 and stack2 are not identical" << endl;
stack2.pop(); stack2.push(32);
cout << "**** After pop and push operations on stack2 ****" << endl; if (stack1 == stack2) cout << "stack1 and stack2 are identical" << endl; else cout << "stack1 and stack2 are not identical" << endl;
stack2.push(11);
cout << "**** After another push operation on stack2 ****" << endl; if (stack1 == stack2) cout << "stack1 and stack2 are identical" << endl; else cout << "stack1 and stack2 are not identical" << endl; return 0; }
================
myStack.h template
#ifndef H_StackType #define H_StackType #include
#include "stackADT.h"
using namespace std; template
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
~stackType(); //destructor //Remove all the elements from the stack. //Postcondition: The array (list) holding the stack // elements is deleted.
bool operator==(const stackType
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
template
template
template
template
template
template
template
template
maxStackSize = 100; } else maxStackSize = stackSize; //set the stack size to //the value specified by //the parameter stackSize
stackTop = 0; //set stackTop to 0 list = new Type[maxStackSize]; //create the array to //hold the stack elements }//end constructor
template
template
//copy otherStack into this stack for (int j = 0; j < stackTop; j++) list[j] = otherStack.list[j]; } //end copyStack
template
copyStack(otherStack); }//end copy constructor
template
return *this; } //end operator=
#endif
================
stackADT.h template
#ifndef H_StackADT #define H_StackADT template
virtual bool isEmptyStack() const = 0; //Function to determine whether the stack is empty. //Postcondition: Returns true if the stack is empty, // otherwise returns false.
virtual bool isFullStack() const = 0; //Function to determine whether the stack is full. //Postcondition: Returns true if the stack is full, // otherwise returns false.
virtual void push(const Type& newItem) = 0; //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.
virtual Type top() const = 0; //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.
virtual void pop() = 0; //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. }; #endif
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started