Raspuns: a si b.
Deoarece este o simplu inlantuita, trebuie sa ii spunem primului element ca nodul urmator e al 3-lea(daca exista), si apoi sa dealocam memoria alocata pentru al 2-lea nod. Instructiunile sunt:
p->next=p->next->next; //pentru semnalarea nodului 1 ca urmatorul nod e nodul 3
free(p->next);//pentru dealocarea memoriei ocupata de nodul 2
sau
q=p->next;
p->next=q->next;
free(q);
care e aproape la fel, important e ca programul sa nu incerce sa se atinga de *q dupa ce a fost apelata functia free pe el, care este exact problema la c, iar la d nu semnaleaza ca nodul care urmeaza dupa primul este nodul 3.