Exemplo n.º 1
0
bool CNode::remove(int index)
{
   if( index<0 || index>=mSize )
   {
      printf("Error, element %d doesn't exist\n", index);
      return false;
   }
   
   CData * curElement;
   
   if( mSize==1 )
   {
      curElement = mFirst;
      mLast = 0;
      mFirst = 0;
      delete curElement;
   }
   else if( index == mSize-1 )
   {
      curElement = mLast;
      mLast = mLast->getPrevious();
      mLast->setNext( 0 );
      delete curElement;
   }
   else if ( index==0 )
   {
      curElement = mFirst;
      mFirst = mFirst->getNext();
      mFirst->setPrevious( 0 );
      delete curElement;
      decIndexses(mFirst);
   }
   else 
   {
      curElement = mFirst->getNext();
      while ( curElement )
      {
         if ( curElement->getIndex() == index )
         {
            curElement->getPrevious()->setNext( curElement->getNext() );
            curElement->getNext()->setPrevious( curElement->getPrevious() );

            decIndexses(curElement->getNext());
            delete curElement;
            break;
         }
         curElement = curElement->getNext() ;
      }    
   }
   
   mSize--;
   return true;
}