Quindi fai un rimpiazzamento del elemento giusto? Allora la cosa è + facile
void vla::inserimento_lista(char elem,char elemento)
{
for(int i = 0; i < 10; i++)
{
if(vet[i].info == elem)
{
vet[i].info = elemento;
break; //elemento rimpiazzato
}
}
}
Il tuo problema è capire le liste. Le liste sono delle entità dove ogni elemento è linkato al successivo. Nel tuo caso tu stai creando un vettore di struct che è una lista se proprio lo voliamo chiamare così. Il modo giusto sarebbe stato dichiarare la lista così;
nodo *vet;
In questo modo tu non hai allocato spazio per 10 elementi ma hai una lista che cresce dinamicamente ogni volta che c'è bisogno di inserire un elemento.
il rimpiazzamento adesso cambia.
if(vet == NULL)
return; //niente da rimpiazzare, lista vuota
nodo *ptr = vet;
while(ptr->next != NULL && ptr->info != elem)
ptr = ptr->next;
if(ptr->info == elem)
ptr->info = elemento; //rimpiazzamento
else //fine lista quindi non fare niente perche non hai trovato l'elemento da rimpiazzare
{
}
Come vedi nessun indice i è coinvolto perche non si può + parlare di indice ma solo di celle di memoria che puntano ad altre celle tramite il puntatore next.