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:
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 mio file di implementazione rubrica.cpp(di cui riporto solo la funzione ricerca in forma iterativa):
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";
}
Il main penso sia inutile riportarlo allo scopo della domanda...
vi ringrazio in anticipo per le risposte!
Grazie mille!