0% au considerat acest document util (0 voturi)
12 vizualizări2 pagini

LSD

Documentul prezintă operații de bază pe liste neordonate și ordonate, inclusiv căutarea, adăugarea și ștergerea de noduri. Pentru liste neordonate, se descriu funcții de căutare a unui nod după nume, adăugarea unui nou nod la început și ștergerea unui nod existent. Pentru liste ordonate, este prezentată ștergerea unui nod prin compararea numelor.

Încărcat de

NadeaGheorghiu
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
12 vizualizări2 pagini

LSD

Documentul prezintă operații de bază pe liste neordonate și ordonate, inclusiv căutarea, adăugarea și ștergerea de noduri. Pentru liste neordonate, se descriu funcții de căutare a unui nod după nume, adăugarea unui nou nod la început și ștergerea unui nod existent. Pentru liste ordonate, este prezentată ștergerea unui nod prin compararea numelor.

Încărcat de

NadeaGheorghiu
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Liste

 Căutarea în lista neordonată


persoana* cauta(char *nume) {
persoana *p;
for (p=lista; p!=NULL; p=p->urm)
if (strcmp(p->nume,nume)==0) return p;
return NULL;
}
 Adăugarea într-o listă neordonată
void adauga(void) { /* creaza un nou nod si il adauga la inceputul listei */
char nume[100], adr[100];
int varsta; persoana *nou;
printf("introduce numele, varsta si adresa: \n");
scanf("%s %d %s", nume, &varsta, adr);
/* aloca spatiu pentru noul nod */
if (((nou=(persoana *)malloc(sizeof(persoana)))==NULL) ||
((nou->nume=(char *)malloc(strlen(nume)+1))==NULL)||
((nou->adresa=(char *)malloc(strlen(adr)+1))==NULL)) {
printf("\n Eroare alocare memorie \n");
exit(1);
}
/*copiaza informatiile in nod */
strcpy(nou->nume, nume);
strcpy(nou->adresa, adr);
nou->varsta=varsta;
/* introduce noul nod in capul listei */
nou->urm=lista;
lista=nou;
}
 Ştergerea unui nod din listă neordonata
void sterge(void) {
char nume[100]; persoana *q1,*q2; printf("Introd numele ");
scanf("%s", nume);
for (q1=q2=lista; q1!=NULL; q2=q1, q1=q1->urm)
if (strcmp(q1->nume,nume)==0) {
if (q1==lista) { /* sterge capul listei */ lista=q1->urm; }
else { /* sterge un nod din interiorul listei */ q2->urm=q1->urm; }
free(q1->nume); free(q1->adresa); free(q1);
return; }
printf("Stergere: %s nu a fost gasit in lista \n",nume);
}

 Eliminarea unui element dintr-o listă ordonată


void sterge_ordonat(void) {
/* scoate din evidenta o persoana */ char nume[100];
persoana *q1,*q2; printf("Introd numele ");
scanf("%s",&nume);
for(q1=q2=lista;q1!=NULL&&strcmp(q1->nume,nume)<0;
q2=q1,q1=q1->urm) ;
if (q1!=NULL && strcmp(q1->nume,nume)==0) {
if (q1==lista) /* sterge capul listei */ lista=q1->urm; else /* sterge un nod din interiorul listei */
q2->urm=q1->urm;
free(q1->nume);
free(q1->adresa); free(q1);
return;
}
/* aici se ajunge daca numele nu a fost gasit */
printf("Stergere: %s nu a fost gasit in lista \n",nume); }

S-ar putea să vă placă și