Sunteți pe pagina 1din 14

Structuri de date alocate

dinamic
Alocarea dinamic a memoriei

Alocarea
memoriei
Structuri
dinamiceinterne

Alocarea dinamic a
memoriei
new

Sintaxa
new
tipdata_pointer = new tipdata;
tipdata_pointer = new tipdata(val_initializare);
//pentru iniializarea datei pentru care se aloc memorie
dinamic

tipdata_pointer = new tipdata[nr_elem]; //alocarea


memoriei pentru un tablou

delete
delete tipdata_pointer;
delete [nr_elem] tipdata_pointer; //eliberarea
memoriei pentru tablouri

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;

3. S se aloce dinamic memorie pentru un vector de 10 elemente reale.


double *vector;
vector=new double[10];
delete [10] vector;

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

numeric. Determinai dublul acestora.


Citii i afiai tablouri uni si bidimensionale

alocate dinamic.
Citii i afiai variabile de tip struct alocate

dinamic. De exemplu informaii despre un


produs.
Pentru fiecare eliberai spaiul de memorie.

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

Liste liniare simplu nlnuite


Dac ntre nodurile unei liste exist o singur rela ie de

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.

Crearea unei liste simplu


nlnuite
void cre_ad()
//functia de creare si adaugare a unui nou element
{nod *c;
if(!prim)
//daca lista este vida (p==0) se aloca primul nod
{prim=new nod;
cout<<"valoare primului nod ";
cin>>prim->info;
ultim=prim; //la creare primul si ultimul nod vor fi identici
}
else //altfel se adauga un nou element la sfarsit
{ c=new nod; //se aloca un nou nod
cout<<"informatia utila :";
cin>>c->info; //se completeaza campul informatie utila
ultim->urm=c; //se adauga dupa ultimul nod
ultim=c; //se stabileste noul nod c ca fiind ultimul
}
ultim->next=0; //campul adresa urmatoare a ultimului nod este 0
}

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;
}

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