1 / 14

Structuri de date alocate dinamic

Structuri de date alocate dinamic. Alocarea dinamică a memoriei. Alocarea dinamică a memoriei. Sintaxa. new. tipdata_pointer = new tipdata; tipdata_pointer = new tipdata(val_initializare); // pentru inițializarea datei pentru care se alocă memorie dinamică

grover
Download Presentation

Structuri de date alocate dinamic

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Structuri de date alocate dinamic Alocarea dinamică a memoriei

  2. Alocarea dinamică a memoriei

  3. Sintaxa new tipdata_pointer = new tipdata; tipdata_pointer = new tipdata(val_initializare); //pentru inițializarea datei pentru care se alocă memorie dinamică tipdata_pointer = new tipdata[nr_elem]; //alocarea memoriei pentru un tablou

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

  5. Exemple 1. Să se aloce dinamic memorie pentru o dată de tip întreg: int *p; p=new int; //prelucrari cu *pdelete p; 2. Să se aloce dinamic memorie pentru o dată reală, dublă precizie, initializând-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;

  6. 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 celălat 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;

  7. Exerciții • Citiți și afișați variabile alocate dinamic de tip numeric. Determinați dublul acestora. • Citiți și afișați tablouri uni si bidimensionale alocate dinamic. • Citiți și afișați variabile de tip struct alocate dinamic. De exemplu informații despre un produs. • Pentru fiecare eliberați spațiul de memorie.

  8. Liste Lista este o structură de date logică, liniară, cu date omogene, în care fiecare element are un succesor și un predecesor, exceptând primul element, care nu are decât succesor și ultimul element, care nu are decât un predecesor. Elementele unei liste se numesc noduri.

  9. Liste

  10. Liste liniare simplu înlănțuite • Dacă între nodurile unei liste există o singură relație de ordine atunci spunem că lista este simplu înlănțuită. Definim asfel un nod al listei • struct nod {tip info; nod *urm;}; Referirea la câmpurile nodului se face astfel: elem->info; elem->urm; unde elem este de tip nod.

  11. Crearea unei liste simplu înlănțuite voidcre_ad() //functia de creare si adaugare a unuinouelement {nod *c; if(!prim) //daca lista este vida (p==0) se aloca primulnod {prim=new nod; cout<<"valoareprimuluinod "; cin>>prim->info; ultim=prim; //la creare primul si ultimulnodvor fi identici } else //altfel se adauga un nouelement la sfarsit { c=new nod; //se aloca un nounod cout<<"informatiautila :"; cin>>c->info; //se completeazacampulinformatieutila ultim->urm=c; //se adaugadupaultimulnod ultim=c; //se stabilestenoulnod c cafiindultimul } ultim->next=0; //campuladresaurmatoare a ultimuluinod este 0 }

  12. Afișare 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; }

More Related