HeaderItem* HeaderItemList::getItem(FPTreeItem *item) { bool found = false; HeaderItem *itemFound = NULL; HeaderItem *temp = NULL; FPTreeItem *tempFPItem = NULL; NodeLL *curr = head; while (!found && curr!=NULL) { temp = (HeaderItem*)curr->getData(); if(temp != NULL) { tempFPItem = (FPTreeItem*)temp->getData(); //DEBUG print // cout << "Comparting:"; // tempFPItem->print(); // cout << " with "; // item->print(); // cout << "\n"; if (tempFPItem != NULL && tempFPItem->getData()==item->getData()) { itemFound = temp; found = true; } } curr = curr->getNext(); } return itemFound; }
NodeLL* HeaderItemList::extract(int item) { NodeLL *curr = head; NodeLL *currPrev = NULL; NodeLL *currNext = NULL; NodeLL *result = NULL; HeaderItem *currItem = NULL; bool found = false; while (!found && curr !=NULL) { currItem = dynamic_cast<HeaderItem*>(curr->getData()); if(currItem!=NULL && currItem->getData() != NULL) { found = currItem->getData()->getData() == item; if(found) { result = curr; currNext = curr->getNext(); currPrev = curr->getPrev(); if(curr == head) { head = currNext; if(currNext!=NULL) currNext->setPrev(NULL); }else if(curr == tail) { tail = currPrev; if(currPrev!=NULL) currPrev->setNext(NULL); }else { currPrev->setNext(currNext); currNext->setPrev(currPrev); } curr->setNext(NULL); curr->setPrev(NULL); } } curr = curr->getNext(); } return result; }