Răspuns:
void InserareDupaQ(nod* &prim, nod* &ultim, nod* q, int x)
{
nod* newNode = new nod;
newNode->ant = NULL;
newNode->urm = NULL;
newNode->info = x;
nod* traverseNode = prim;
while (traverseNode)
{
if (traverseNode == q)
{
// Cazul 1: q este de fapt primul nod
if (q == prim)
{
prim->urm = newNode;
newNode->ant = prim;
newNode->urm = q->urm;
}
// Cazul 2: q este de fapt ultimul nod
else if (q == ultim)
{
ultim->urm = newNode;
newNode->ant = ultim;
ultim = newNode;
}
// Cazul 3: q este la mijloc
else
{
newNode->urm = q->urm;
q->urm = newNode;
newNode->ant = q;
}
break;
}
traverseNode = traverseNode->urm;
}
}
Explicație: