#if !defined H_CLASS_FUNCTIONS #define H_CLASS_FUNCTIONS #include #include #include "hadexitcodes.h" #include "hqueuedata.h" template void HQueueData::free() { if(!pFirst) return; pCurrent=pFirst; HQueueElement * pElement; do { pElement=current; current=current->next; delete pElement; } while(pCurrent!=pFirst); pFirst=pLast=pCurrent=0; } template Type& HQueueData::remove() { if(nElements==0) { cerr << " Queue already empty"<previous)->next=current->next; (current->next)->previous=current->previous; current=current->next; nElements--; return pElement->element; } template int HQueueData::append(const Type &dataElement) { HQueueElement *pElement=new HQueueElement (dataElement); if (pElement==0) return HFAILURE; if (nElements++) { last->next=pElement; pElement->previous=last; last=pElement; last->next=first; first->previous=last; } else { first=last=current=pElement; first->next=first->previous=pElement; } return HSUCCESS; } template int HQueueData::insert(const Type &dataElement) { HQueueElement *pElement=new HQueueElement (dataElement); if (pElement==0) return HFAILURE; if (nElements++) { current->next=pElement; pElement->previous=current; pElement->next=current->next; (pElement->next)->previous=pElement; current=pElement; } else { first=last=current=pElement; first->next=first->previous=pElement; } return HSUCCESS; } template int HQueueData::find(const Type &dataElement) { HQueueElement * pElement=current->next; int i=0; while( pElement->element!=dataElement && inext; } if (i=nElements) return HFAILURE; current=pElement; return HSUCCESS; } template int HQueueData::find() { HQueueElement * pCurEle=current; HQueueElement * pElement=current->next; int i=0; while(pCurEle->element != pElement->element && inext; } if (i=nElements) return 0; current=pElement; return 1; } template int HQueueData::find(const Type &minEle,const Type &maxEle) { HQueueElement * pElement=current->next; int i=0; while( pElement->element > minEle && pElement->element < maxEle && inext; } if (i=nElements) return 0; current=pElement; return 1; } #endif