Exemplo n.º 1
0
void CNode::print()
{
   CData * curElement = mFirst;
   while (curElement)
   {
      printf( "%s\n", curElement->getStr() );
      curElement = curElement->getNext() ;
   } 
   printf( "\n" );
}
Exemplo n.º 2
0
void CNode::push_front(char * str)
{
   CData * newElement = new CData( str, mFirst, 0, 0 );
   
   if ( mFirst )
      mFirst->setPrevious(newElement);
   mFirst = newElement;
   
   if( !mLast )
      mLast = newElement;

   addIndexses(mFirst->getNext());
   
   mSize++;
}
Exemplo n.º 3
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;
}