Documente Academic
Documente Profesional
Documente Cultură
Variabile dinamice
Caracteristici: - se memoreaza intr-o zona numita HEAP
- nu au nume, se identifica si acceseaza prin intermediul unui
pointer
- durata de viata este in momentul in care fost create pana in
momentul in care au fost distruse
SS / SD HEAP
p 5
Crearea unei variabile dinamice (alocarea de spatiu in HEAP)
pointer = new tip;
exemplu: int *p;
p=new int;
se creeaza in HEAP o variabila dinamica de tipul int, a carei
adresa se memoreaza in pointerul p
*p = 5;
*p++; 6
Distrugerea unei variabile dinamice:
delete nume_pointer;
exemplu: delete p;
SS / SD HEAP
X NULL
P u nou
void adaug(nod* &p, nod* &u, int x)
{ nod* nou;
if(!p) { p=new nod;
p->val = x; // echivalent cu (*p).val = x;
p->urm = NULL; //NULL = 0 la nivel de adrese
u=p;
}
else { nou=new nod;
nou->val = x;
nou->urm = NULL;
u->urm = nou;
u=nou;
}
}
Crearea unei liste simplu inlantuite cu n elemente:
void creare(nod* &p, nod* &u, int n)
{ int i, x;
for(i=1;i<=n;i++)
{ cin>>x;
adaug(p,u,x);
}
}
Afisarea unei liste simplu inlantuite
void afisare(nod* p)
{ nod* c;
c=p;
while(c!=NULL)
{ cout<<c->val<<” ”;
c = c->urm;
}
}
void afisare(nod* p)
{ nod* c;
for(c=p;c!=NULL;c=c->urm)
cout<<c->val<<” ”;
}
P c c->urm nou
Stergerea unui nod
NULL
P c u
Atentie!! c este adresa de dinaintea celei care se sterge!!