CIS c++

1) Define the exception class MemoryAllocationException and then revise the definition of the method push in the class LinkedStack so that it throws this exception if it cannot allocate a new node.


2) Improve the palindrome-recognition algorithm C++ source code (shown below in blue), by adding the first length / 2 characters to the queue and then pushing the remaining characters onto the stack.


//  Tests whether a given string is a palindrome.

 isPalindrome(someString: string): Boolean


// Create an empty queue and an empty stack

aQueue = a new empty queue

aStack = a new empty stack


// Add each character of the string to both the queue and the stack

length = length of someString

for (i = 1 through length)


nextChar = ith character of someString






// Compare the queue characters with the stack characters


charactersAreEqual = true

while (aQueue is not empty and charactersAreEqual)


queueFront = aQueue.peekFront()

stackTop = aStack.peek()

if (queueFront equals stackTop)






charactersAreEqual = false


return charactersAreEqual



3) Revise the parameterized constructor (shown below) to call the base-class’s constructor instead of MagicBox’s constructor.


/** @file MagicBox.h */

#ifndef _MAGIC_BOX

#define _MAGIC_BOX

#include “PlainBox.h”


template<class ItemType>

 class MagicBox : public PlainBox<ItemType>




bool firstItemStored;




MagicBox(const ItemType& theItem);

void setItem(const ItemType& theItem);

}; // end MagicBox


#include “MagicBox.cpp”


/** @file MagicBox.cpp */


template<class ItemType>






firstItemStored = false; // Box has no magic initially

} // end default constructor


template<class ItemType>

MagicBox<ItemType>::MagicBox(const ItemType& theItem)



firstItemStored = false; // Box has no magic initially

setItem(theItem); // Box has magic now

}              // end constructor


template<class ItemType>

void MagicBox<ItemType>::setItem(const ItemType& theItem)



if (!firstItemStored)




firstItemStored = true; // Box now has magic

 } // end if


} // end setItem



Leave a Comment

Your email address will not be published. Required fields are marked *