Informatică, întrebare adresată de Jkoiuhhj, 8 ani în urmă

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

Răspuns de andrei750238
6

#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);

}

Anexe:
Alte întrebări interesante