Având definita următoarea structura:
typedef struct pers {
char * nume;
int varsta;
char * adresa;
struct pers * urm;
} persoana;
persoana * lista = null; , care este indicator la prima persoana din lista. Se cere:
- sa se caute o persoana cu un nume precizat in lista și dacă se poate sa se returneze un pointer la nodul in care se găsește, iar dacă nu se găsește sa se returneze NULL.
- sa se afișeze informațiile din toate nodurile.
Dacă se poate sa ma ajutați și cu explicații la acest Exercițiu. Mulțumesc!
Răspunsuri la întrebare
#include <iostream>
#include <cstring>
using namespace std;
struct persoana {
char nume[100];
int varsta;
char adresa[100];
persoana *urm=NULL;
};
persoana *cautare(persoana *prim){
char nume[100];
cout << "Introduceti numele cautat : ";
cin.get(nume,100);
bool eol=0; //End Of List
while(strcmp(prim->nume,nume)!=0 && !eol){
if(prim->urm == NULL) eol=1;
else prim = prim->urm;
}
if(!eol) return prim;
else return NULL;
}
void afisare_rezultat(persoana *prim){
bool eol=0; //End Of List
while(!eol){
cout << "\nNume :" << prim->nume;
cout << "\nVarsta :" << prim->varsta;
cout << "\nAdresa :" << prim->adresa;
cout << endl;
if(prim->urm == NULL) eol=1;
else prim = prim->urm;
}
}
int main(){
//Creare set de date
persoana p1,p2,p3,p4;
strcpy(p1.nume, "Ana");
p1.varsta = 18;
strcpy(p1.adresa, "11");
strcpy(p2.nume, "Baciu");
p2.varsta = 19;
strcpy(p2.adresa, "22");
p2.urm = &p1;
strcpy(p3.nume, "Carmen");
p3.varsta = 20;
strcpy(p3.adresa, "33");
p3.urm = &p2;
strcpy(p4.nume, "Dan");
p4.varsta = 21;
strcpy(p4.adresa, "44");
p4.urm = &p3;
persoana *prim= &p4;
//Cautare persoana
persoana *rezultat = cautare(prim);
if(rezultat != NULL) cout << "Adresa :" << rezultat << endl;
else cout << "nu exista" << endl;
prim = &p4;
//Afisare informatii noduri
afisare_rezultat(prim);
}