Allora la domanda è: come faccio ad implementare la funzione ricerca della seguente traccia, in modo ricorsivo, io l'ho svolta in maniera iterativa...vi scrivo di seguito tutto:
TRACCIA
Testo della Prova
Si realizzi in C++ una classe Lista che consente la gestione di una rubrica telefonica.
La Lista è realizzata mediante una lista linkata. Ogni elemento della lista è una struttura i cui campi sono:
char * Nome
char * Cognome
int Telefono
La classe Lista deve prevedere (oltre al costruttore e al distruttore) i seguenti metodi:
- Inserimento in testa;
- Ricerca numero da cognome; (e’ preferibile l’implementazione ricorsiva)
- Stampa a video;
- Stampa su file;
Il mio file di specifica rubrica.h:
Il mio file di implementazione rubrica.cpp(di cui riporto solo la funzione ricerca in forma iterativa):codice:struct nodo; typedef struct nodo* puntnodo; typedef struct nodo{ char* nome; char* cognome; int telefono; puntnodo punt; }; class lista{ puntnodo l; public: lista():l(0){} ~lista(); void push(char*,char*,int); void ricerca(char* cogn); //La funzione cancella non c'era nella traccia void cancella(char* cogn); void stampavideo(); void stampafile(); };
Il main penso sia inutile riportarlo allo scopo della domanda...codice:/*Ricerca del numero di una persona dato il cognome(se ci sono cognomi uguali mi da il numero della persona inserita più di recente),questa è una versione iterativa*/ void lista::ricerca(char* cogn){ puntnodo temp=l; bool trovato=false; while(temp){ if(!strcmp(temp->cognome,cogn)){ trovato=true; cout<<"Il numero dell'utente "<<temp->cognome; cout<<" e' "<<temp->telefono<<"\n"; break; } else temp=temp->punt; } if(!trovato)cout<<"Il cognome non e' presente nella lista!\n"; }
vi ringrazio in anticipo per le risposte!
Grazie mille!

Rispondi quotando
!!!!
