\ \ __ \ \ | \ > Pretty Difficult >------| \ ______ / / --- \_____/**|_|_\____ | / / \_______ --------- __>-} /----------------------------------/ / \_____|_____/ | * | {O}template< typename NODETYPE >
bool List< NODETYPE >::removeFromFront( NODETYPE &value )
{
if ( isEmpty() ) // List is empty
return ?????; // delete unsuccessful
else
{
ListNode< NODETYPE > *tempPtr = firstPtr; // hold tempPtr to delete
if ( firstPtr == lastPtr )
no nodes remain after removal;
else
point to previous 2nd node
// return data being removed
delete tempPtr; // reclaim previous front node
return true; // delete successful
} // end else
} // end function removeFromFront
--------------------------------------------------------------------------------------------------
template< typename NODETYPE >
bool List< NODETYPE >::removeFromBack( NODETYPE &value )
{
if List is empty
return ???; // delete unsuccessful
else
{
ListNode< NODETYPE > *tempPtr = lastPtr; // hold tempPtr to delete
if List has one element
no nodes remain after removal
else
{
ListNode< NODETYPE > *currentPtr = firstPtr;
// locate second-to-last element
while ( currentPtr->nextPtr != lastPtr )
move to next node;
remove last node
this is now the last node
} // end else
return value from old last node
reclaim former last node
return ???
} // end else
} // end function removeFromBack