2015년 5월 20일 수요일

[C++] Hint for Homework 12

  \                                  \        __
   \                                  \       | \
    >     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