Data la seguente porzione di codice (preso da un libro didattico sul C++ di Domenici/Frosini) che estrae l'elemento 'a' da una lista ma non capisco la ragione per cui la variabile automatica
p venga inizializzata a zero.
Secondo me questo puntatore non dovrebbe essere inizializzato ma vorrei avere una vostra opinione, di seguito la mia giustificazione:
se la lista è vuota la funzione termina subito e non utilizza il puntatore p
se la lista non è vuota e non contiene l'elemento 'a' il ciclo iterativo 'for' almeno una volta assegna a 'p' il valore di 'q'
se la lista non è vuota e contiene l'elemento 'a' stesso discorso del punto precedente
p viene utilizzato soltanto nel caso l'elemento estratto non sia in testa e in quel caso il ciclo for ha già provveduto ad assegnargli un valore.
struct elem {
int inf;
elem* pun;
};
Bool estrazione(elem *p0, int a)
{
elem* p=0;
(for elem* q=p0; q && (q->inf!=a); q=q->pun)
p=q;
if (!q) return false; // siamo a fine lista e non abbiamo trovato alcun elemento
if (q==p0) // l'elemento cercato è in testa alla lista
p0=q->pun;
else
p->pun=q->pun;
delete q;
return true;
}