Professional Documents
Culture Documents
Structuri statice
Structuri dinamice
Structuri statice
Dimensiunea zonei alocate este fix. Alocarea ei se face n timpul compilrii, n funcie de modul n care a fost declarat structura, iar n timpul execuiei programului nu mai poate fi modificat.
Structuri dinamice
Dimensiunea zonei alocate nu este fix. Alocarea sau eliberarea zonelor de memorie folosite de structur se face n timpul execuiei programului, n funcie de numrul de componente ale structurii.
delete
Operator unar care elibereaz zona de memorie spre care pointeaz argumentul su
Sintaxa new
tipdata_pointer = new tipdata;
tipdata_pointer = new tipdata(val_initializare); //pentru iniializarea datei pentru care se aloc memorie
dinamic
delete
delete tipdata_pointer;
Exemple
1. S se aloce dinamic memorie pentru o dat de tip ntreg:
int *p; p=new int; //prelucrari cu *p delete p;
2. S se aloce dinamic memorie pentru o dat real, dubl precizie, initializnd-o cu valoarea -7.2.
double *p; p=new double(-7.2); //prelucrari cu *p delete p;
Exemple
4. S se aloce dinamic memorie pentru o matrice cu 3 linii si 5 coloane de tip double. double (*a)[5]=new double [3][5]; //prelucrari cu a a[2][2]==4.9 delete [3] a;
5. S se aloce dinamic memorie pentru o structur cu dou campuri: unul ntreg iar cellat de tip caracter.
struct articol {int nr; char c; }; articol *pa; pa=new articol; cout<<endl<<"nr=";cin>>pa->nr; cout<<endl<<"caracterul ";cin>>pa->c; cout<<endl<<pa->nr<<" "<<pa->c<<" tot la adresa "<<pa<<endl; delete pa;
Exerciii
Citii i afiai variabile alocate dinamic de tip
alocate dinamic.
Citii i afiai variabile de tip struct alocate
Liste
Lista este o structur de date logic, liniar, cu date omogene, n care fiecare element are un succesor i un predecesor, exceptnd primul element, care nu are dect succesor i ultimul element, care nu are dect un predecesor. Elementele unei liste se numesc noduri.
Liste
simplu nlnuite
liniare
circulare liniare
Liste
dublu nlnuite
circulare
ordine atunci spunem c lista este simplu nlnuit. Definim asfel un nod al listei struct nod {tip info; nod *urm;}; Referirea la cmpurile nodului se face astfel: elem->info; elem->urm; unde elem este de tip nod.
Afiare list
void afis() //functia de afisare parcurge elementele cu afisare {nod *c; c=prim; //se porneste de la primul nod din lista while(c) //cat timp c retine o adresa nenula {cout<<c->info<<" ";//se afiseza campul informatie utila c=c->next;} //se avanseaza la urmatoarea adresa, la urmatorul nod cout<<endl; }