Alcune considerazioni:
- in generale nel C++ si utilizza nullptr al posto di NULL;
- a cosa serve quel typedef? Inoltre che senso ha rinominare struct nodo come New?
- nella funzione print(), considerando il concetto di passaggio per copia, ti renderai conto che la variabile temp risulta superflua;
- nel main() il messaggio Inserisci multiplo è concettualmente sbagliato, al massimo avresti potuto scrivere Inserisci divisore;
- nella funzione lista() mischi i concetti di aggiunta in testa e in coda, che sarebbe invece meglio tenere separati;
- infine la funzione newL() può essere notevolmente semplificata utilizzando i puntatori doppi. Per esempio puoi implementare una funzione
void elimina_nodo(nodo **p);
da utilizzare in
void elimina_multipli(nodo **p, int n)
{
while(*p)
{
if(!((*p)->info % n))
{
elimina_nodo(p);
}
else
{
p = &(*p)->next;
}
}
}