Ehm...altro problema..
..oltre all'inserimento e alla stampa, la mia prof. mi ha chiesto di effettuare anche l'estrazione in qualsiasi parte della lista...
bene..io ho proposto la seguente soluzione..
//estrazione
case 4:
{
if(testa==NULL)
cout<<"lista vuota"<<"\n";
else
{
trova=0;
p=testa;
ptr=testa; //inizializziamo la variabile trova a 0 e assegniamo sia a p che a ptr il contenuto di testa
cout<<"quale elemento vuoi estrarre?"<<"\n";
cin>>n;
while((ptr->succ!=NULL)&&(trova==0)) //fino a quando il campo succ della variabile dinamica puntata da ptr è diverso da NULL e trova è uguale a 0
{
if(testa->num==n)
{
cout<<"l'elemento e' stato estratto"<<"\n";
if(ptr->succ==NULL)
{
testa=NULL;
p=p->succ;
ptr=ptr->succ;
trova=1;
}
else
{
testa=testa->succ;
trova=1;
}
} //se l'elemento che vogliamo estrarre si trova in testa la lista viene estratto subito e, incrementando la variabile trova, evitiamo di scorrere inutilmente
//tutti i nodi della lista
else
{
p=ptr;
ptr=ptr->succ;
} //altrimenti in p memorizziamo il contenuto di ptr e ptr viene aggiornata e punta al nodo successivo
if(trova==0)
{
if(ptr->num==n)
{
cout<<"l'elemento e' stato estratto"<<"\n";
p->succ=ptr->succ;
trova=1;
}
} //se trova è uguale a 0 e se il numero contenuto nel campo num della variabile dinamica puntata da ptr è uguale al numero che vogliamo estrarre//
//allora il campo succ del nodo precedente punterà al nodo successivo al quale puntava, prima di essere estratto, ptr
}
if((ptr->succ==NULL)&&(trova==0))
{
if(ptr->num==n)
{
cout<<"l'elemento e' stato estratto"<<"\n";
p->succ=NULL;
}
else
cout<<"elemento non presente"<<"\n"; //se alla fine di tutti i controlli trova rimane ancora uguale a 0, allora l'elemento non è presente nella lista
}
..che non è sbagliata, perchè l'estrazioni le effettua correttamente..però c'è sempre il solito "piccolo" problemino..e cioè..se io inserisco 3-4-5 nella lista ed estraggo nell'ordine 4-5-3, quando poi vado a stampare la lista, non mi spunta il messaggio "lista vuota" come dovrebbe, ma spunta solo l'elemento in testa, cioè in questo caso 3.. ..non riesco a far andare testa a NULL, anche se ho messo un'istruzione che dovrebbe farla puntare a NULL..aiutatemi voi, please..!