Pergunta de entrevista da empresa Bloomberg

Write code to search and delete an element from a doubly linked list.

Resposta da entrevista

Sigiloso

17 de jan. de 2013

One implementation of this function might be: bool List::deleteIter(ItemType item) { DNode *currP; /* * Visit each node */ for (currP = head; currP != NULL; currP = currP->getNext()) { if (currP->getData() == item) { /* Found it. */ if (currP->getPrev() == NULL) { /* Remove from beginning */ /* Fix beginning pointer. */ head = currP->getNext(); } else if(currP->getNext() == NULL) { /* Remove from end */ currP->getPrev()->setNext(NULL); } else { /* Remove from middle */ /* * Fix previous node's next to * skip over the removed node. */ currP->getPrev()->setNext(currP->getNext()); /* * Fix next node's prev to * skip over the removed node. */ currP->getNext()->setPrev(currP->getPrev()); } delete currP; /* Deallocate the node. */ return true; /* Done searching. */ } } return false; /* Not in the list. */ }