dopo essermi studiato un poco le liste sono arrivato finalmente a una conclusione di questo esercizio, anche se il codice non è ancora perfetto, visto che mi stampa solo l'ultimo contatto che inserisco;ancora devo implementare la funzione cancella e la funzione che mi stampa il risultato di cerca, comunque più o meno il codice dovrebbe essere questo:
Codice PHP:
include <iostream>#include <iomanip>
using namespace std;
struct contatto {
string nome;
string cognome;
long int numero;
contatto*next;
};
contatto*il=NULL;
struct risultatiRicerca{
contatto*precedente;
contatto*trovato;};
void inserisciintesta(contatto*&il,contatto*nuovo){
nuovo->next=il;
il=nuovo;}
void inserisciincoda(contatto*&il,contatto*nuovo){
contatto*ultimo=NULL;
if (il==NULL){
inserisciintesta(il,nuovo);
}
else{
ultimo=il;
while (ultimo->next!=NULL) {
ultimo=ultimo->next;
ultimo->next=nuovo;
}}}
contatto*cerca(contatto*il,string valore){
contatto*precedente=NULL;
while (il!=NULL&&il->cognome!=valore) {
precedente=il->next;
il=il->next;
}
risultatiRicerca*risultati=new risultatiRicerca;
risultati->trovato=il;
risultati->precedente=precedente;}
int main (){
string valore;
contatto s;
contatto*nuovo=NULL;
int a,b;
cout <<"premi 1 per aggiungere"<<setw(8)<<"premi 2 per ricercare"<<endl;
cin>>a;
if (a==1){
nuovo=new contatto;
cout<<"inserisci numero contatti che voui aggingere"<<endl;
cin>>b;
for (int i=0;i<b;i++){
cout<<"insersci nome"<<endl;
cin>>nuovo->nome; cout<<"inserisci cognome"<<endl;
cin>>nuovo->cognome;
cout<<"inserisci numero di telefono"<<endl;
cin>>nuovo->numero;
nuovo->nome;
nuovo->cognome;
nuovo->numero;
inserisciincoda(il,nuovo);}}
if (a==2){
cout<<"inserisci cognome cercato"<<endl;
cin>>valore;
cerca (il,valore);}
contatto*tmp=il;
while (tmp!=NULL) {
cout<<tmp->nome<<"\n"<<tmp->cognome<<"\n"<<tmp->numero<<endl;
tmp=tmp->next;}
} return 0;
}