Răspuns:
void StergereDupaQ(nod*& prim, nod*& ultim, nod* q)
{
// depinde cum e alocata memoria, daca e alocata cu new, stergi cu delete (ca aici), daca e cu malloc, eliberezi cu free();
nod* toBeDeletedNode = q->urm;
if (toBeDeletedNode == prim)
{
prim = prim->urm;
delete toBeDeletedNode;
toBeDeletedNode = nullptr;
}
else if (toBeDeletedNode == ultim)
{
ultim = ultim->ant;
delete toBeDeletedNode;
toBeDeletedNode = nullptr;
}
else
{
q->urm = toBeDeletedNode->urm;
toBeDeletedNode->ant = q;
delete toBeDeletedNode;
toBeDeletedNode = nullptr;
}
}
Explicație: