Per favore, avrei bisogno di capire come cancellare un elemento da una lista in C++, in pratica questo è il programma:
Si deve creare una lista di pazienti formata da nome, cognome e età.
Poi inseriti i dati, si possono fare 5 cose:
1)aggiungere un nuovo paziente in coda alla lista
2)cancellare un paziente dalla lista (che non sono riuscito a fare)
3)stampare a video la lista
4)svuotare la lista
5)termina il programma
Per favore aiutatemi, ci ho provato diverse volte, non so cosa ci sia di sbagliato!
Questo è l'intero codice:
codice:#include <iostream> using namespace std; struct lista { string paz; //nome string paz2; //cognome int paz3; //età lista *punt; }; int main() { lista *nodo, *nodo_iniziale; string nome; string cogn; int eta; short int num; //scelta dello switch case nodo_iniziale=NULL; cout<<"Inserire nome paziente: "<<endl; cin>>nome; cout<<"Inserire cognome paziente: "<<endl; cin>>cogn; cout<<"Inserire eta' del paziente: (tra 1 e 110)"<<endl; do cin>>eta; while(eta<1 || eta>110); while(nome!="stop") //creazione della lista e inserimento dei vari pazienti { nodo=new lista; nodo->paz=nome; nodo->paz2=cogn; nodo->paz3=eta; nodo->punt=nodo_iniziale; nodo_iniziale=nodo; cout<<"Inserire nome paziente; inserire stop per terminare"<<endl; cin>>nome; if(nome=="stop") goto fine; cout<<"Inserire cognome paziente: "<<endl; cin>>cogn; cout<<"Inserire eta' del paziente: (tra 1 e 110)"<<endl; do cin>>eta; while(eta<1 || eta>110); } fine: do{ cout<<"Inserisci 1 per accodare un nuovo paziente in coda alla lista."<<endl; //menù cout<<"Inserisci 2 per cancellare un paziente dalla lista."<<endl; cout<<"Inserisci 3 per visualizzare l'elenco dei pazienti."<<endl; cout<<"Inserisci 4 per svuotare la lista."<<endl; cout<<"Inserisci 5 per far terminare il programma."<<endl; do cin>>num; while(num<1 || num >5); cout<<endl; switch(num) { case 1: lista *nodo_finale; //accodamento nuovo paziente cout<<"Inserisci nome nuovo paziente: "<<endl; cin>>nome; cout<<"Inserisci cognome paziente: "<<endl; cin>>cogn; cout<<"Inserisci eta' del paziente: "<<endl; do cin>>eta; while(eta<1 || eta>110); nodo->paz=nome; nodo->paz2=cogn; nodo->paz3=eta; nodo->punt=nodo_iniziale; nodo_iniziale=nodo; nodo_finale=nodo; break; case 2: lista *pos; bool trovato; //cancellazione di un paziente cout<<"Inserisci nome paziente da cancellare: "<<endl; cin>>nome; cout<<"Inserisci cognome paziente: "<<endl; cin>>cogn; cout<<"Inserisci eta' del paziente: "<<endl; do cin>>eta; while(eta<1 || eta>110); pos=nodo_iniziale; trovato=false; while((pos!=NULL)&&(!trovato)) { if(pos->paz==nome && pos->paz2==cogn && pos->paz3==eta) { trovato=true; pos=NULL; delete pos; } else { pos=pos->punt; } } break; case 3: //visualizzazione della lista while(nodo!=NULL) { cout<<nodo->paz<<endl; cout<<nodo->paz2<<endl; cout<<nodo->paz3<<endl; nodo=nodo->punt; } break; case 4: //svuotamento della lista nodo=NULL; delete nodo; break; } }while(num!=5); }

Rispondi quotando
