Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

2. Repeat exercise 1 for the class linkedStackType. Answer for part-1. #include

ID: 3647907 • Letter: 2

Question

2. Repeat exercise 1 for the class linkedStackType.

Answer for part-1.

#include <iostream>
#include<cassert>
using namespace std;
//definition of the template class stackType
template <class Type>
class stackType
{
// data memebers of the class
private :
int maxStackSize;
int stackTop;
Type *list;

// data methods of the class
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<Type>& );
}; // end template class stackType
// initialize the stack
template <class Type>
void stackType<Type>::initializeStack()
{
stackTop = 0;
} // end function initializeStack
// check for stack fullness
template <class Type>
bool stackType<Type>::isFullStack() const
{
return ( stackTop == maxStackSize );
} // end function isFullStack
// check for stack empty
template <class Type>
bool stackType<Type>::isEmptyStack() const
{
return ( stackTop == 0 );
} // end function isEmptyStack
// insert an element into stack
template <class Type>
void stackType<Type>::push( const Type& newItem )
{
if ( !isFullStack() )
{
list[ stackTop ] = newItem;
stackTop++;
} // end if
else
cout << " Can not add to a full stack";
} // end function push
// delete an element from the stack
template <class Type>
void stackType<Type>::pop()
{
if ( !isEmptyStack() )
stackTop--;
else
cout << " Can not remove from an empty stack";
} // end function pop
// return the value of stack-top
template <class Type>
Type stackType<Type>::top() const
{
assert( stackTop != 0 );
return list[ stackTop - 1 ];
} // end function top
// constructor for the class stackType
template <class Type>
stackType<Type>::stackType( int stackSize )
{
if ( stackSize <= 0 )
{
cout << "Invalid size";
stackSize = 10;
} // end if
else
maxStackSize = stackSize;
stackTop = 0;
list = new Type[ maxStackSize ];
} // end constructor stackType
// destructor for the class stackType
template <class Type>
stackType<Type>::~stackType()
{
delete[] list;
} // end destructor stackType
// overload the equality operator
template <class Type>
bool stackType<Type>::operator==
( const stackType<Type>& right )
{
// check for same number of elements
if ( this->stackTop != right.stackTop )
return false;
//check for equality of elements at corresponding positions
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 << " Program to overload the realtional "
<< "operator == for the class stackType.";

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

// insert elements into the stacks
cout << " Inserting 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 << " Both the stacks are equal";
else
cout << " Both the stacks are not equal";
// insert one more element into the second stack
cout<<" Inserting element 11 to the second stack.";
s2.push( 11 );
//check and print whether the stacks are equal or not
if ( s1 == s2 )
cout << " Both the stacks are equal";
else
cout << " Both the stacks are not equal";
cout << " ";
system("pause");
return 0;
}
Report Abuse

Explanation / Answer

answer: #ifndef H_StackType #define H_StackType #include #include using namespace std; template class stackType { public: const stackType& operator=(const stackType&); void initializeStack(); bool isEmptyStack(); bool isFullStack(); void destroyStack(); void push(const Type& newItem); Type top(); void pop(); stackType(int stackSize = 100); stackType(const stackType& otherStack); ~stackType(); private: int maxStackSize; int stackTop; Type *list; void copyStack(const stackType& otherStack); }; template void stackType::copyStack(const stackType& otherStack) { delete [] list; maxStackSize = otherStack.maxStackSize; stackTop = otherStack.stackTop; list = new Type[maxStackSize]; assert(list != NULL); for(int j = 0; j
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote