void CNode::print() { CData * curElement = mFirst; while (curElement) { printf( "%s\n", curElement->getStr() ); curElement = curElement->getNext() ; } printf( "\n" ); }
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++; }
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; }