SlideShare a Scribd company logo
1 of 19
CRITERII DE CLASIFICARE A DATELOR Alocarea memoriei interne Structuri statice Dimensiunea   zonei alocate  este fixa.  Alocarea ei se face in timpul  compilarii  , in functie de modul in care a fost declarata stuctura, iar in timpul executiei programului nu mai poate fi modificata Structuri dinamice Dimensiunea   zonei alocate  nu este   fixa . Alocarea sau eliberarea zonelor de memorie folosita de structura se face in timpul  executiei  programului , in functie de numarul de componente ale structurii
Implementarea in limbajul de programare Structuri implicite Structura creata la  nivel conceptual este implementata la nivelul limbajului de programare.  Reprezentarea sa este implicita si nu mai necesita informatii suplimentare pentru localizarea componentelor Structuri explicite Structura creata la  nivel conceptual nu este implementata la nivelul limbajului de programare.  Reprezentarea se va face folosind structurile implicite implementate, in limbaj, fiind necesare informatii suplimentare pentru localizarea componentelor
Dispunerea elementelor in memorie Structuri contigue Elementele sunt dispuse in  zone contigue  de memorie, care permie localizarea uneia dintre ele folosind o adresa de referinta si deplasarea fata de adresa de referinta Structuri dispersate Elementele sunt dispuse in  zone dispersate  de memorie, pentru a putea localiza elementele in structura, trebuie sa se memoreze pentru fiecare element si adresa la care se gaseste
Dezavantaje structuri statice:  deoarece alocarea zonei de memorie se face la compilarea programului, iar in timpul executiei programului pot sa apara urmatoarele cazuri: - spatiul alocat structurii este insuficient - spatiul alocat structurii este mult mai mare decat necesar Avantaje structurii dinamice :alocarea memoriei se face in timpul executiei programului, in functie de numarul de componente ale structurii la acel moment, iar acesta poate fi dezafectat la cererea utilizatorului
STUDIU DE CAZ Scop:   identificarea modului in care trebuie sa identificati problemele in care puteti folosi structura de date de tip lista pentru a le rezolva ,[object Object],[object Object],[object Object]
La nivel  conceptual,  toate aceste colectii de date reprezinta un sir de date de acelasi tip, care trebuie prelucrate prin inserarea si extragerea de elemente,  pastrandu-se o anumita ordine de aranjare a elementelor.  Daca la nivel  logic  s-ar alege solutia de a grupa aceste elemente intr-o structura de date de tip vector, algoritmii de prelucrare, vor necesita multe deplasari de elemente care consuma timp de prelucrare  In cazul structurilor care trebuie sa-si pastreze in timpul exploatarii ordonarea dupa un anumit criteriu, mecanismul vectorilor este greoi.In aceste cazuri,  se poate alege ca solutie de implementare a structurii de date  lista ,  care nu este o structura fizica de organizare a datelor, ci o  structura logica ,  ce degreveaza programatorul de ordonarea dupa indice a structurii, impusa de vectori. Definitia structurii de date de tip lista Lista=  este o structura de date logica, liniara, cu date omogene, in care fiecare element are un succesor si un predecesor, exceptand primul element, care nu are decat succesor si ultimul element care nu are decat predecor
Considerăm un  nod  al listei simplu înlănţuite de forma Type  pointer= ^nod nod = record info:tip; urm :pointer;   end; Var  prim:pointer; Secventa de instructiuni Pascal  pentru definirea unui nod al listei Vom utiliza urmatoarele notatii:  PRIM  – pointerul primului nod al listei,  ULT  - ultimul nod al listei TEMP –pointer temporar de lucru Secventa de instructiuni C++  pentru definirea unui nod al listei Informatia  utila Struct nod { tip_data info nod* urm} Nod* prim Adresa  elem.urm.
Lista simplu inlantuita Lista dublu inlantuita L a ={(d i ,s i )|d i  D,s i    P} L s ={(p i ,d i ,s i )|d i  D,p i ,s i    P}
Stiva (lista LIFO) Coada (lista FIFO) Operatii pe stiva: inserare in capul stivei, stergere din capul stivei, citirea din capul stivei. Operatii specifice: inserare in spate, stergere din fata cozii, citirea din fata cozii. LISTE PARTICULARE
Inserare  în faţa listei ,[object Object],Pascal New(temp); read(x); temp^.inf:=x; temp^.urm:=prim; prim:=temp; C++ temp=new(nod); cin>> x temp->info=x; temp->urm:=prim; prim:=temp; Inf.utilă  urm Inf.utilă  urm Inf.utilă  urm Inf.utilă  nil PRIM ULT temp
  5 Prim   7   10   9 Q Ultim NIL NIL INSERARE IN SPATELE LISTEI Pascal New(Q); x:=9; q^.inf:=x; q^.urm:=NIL; ultim^.urm:=q; ultim:=q C++ q=new(nod); x=9; q->info=x; q->urm:=NULL; ultim->urm=q ultim:=q;
  5 Prim   7 m INSERARE DUPA UN NOD (M) Pascal New(p); x:=9; p^.inf:=x; p^.urm:=m^.urm; m^.urm:=p  C++ p=new(nod); x=9; p->info=x; p->urm:=m->urm; m->=urm=p;   9 P   10 Ultim NIL   9
  5 Prim     10   Ultim NIL temp 7 9 Prim STERGEREA  PRIMULUI NOD Pascal temp:=prim prim:=prim^.urm dispose(temp) C++ temp=prim prim:=prim->urm delete (temp)
  5 Prim     10   ultim NIL 7 9 NIL STERGEREA  ultimului  NOD al listei ultim P Pascal temp:=ultim p^.urm:=nil; dispose(temp) ultim:=p C++ temp=ultim p->urm=NULL; delete(temp) ultim:=p
  6 P   2 Prim NIL NIL INSERARE IN FATA LISTEI DUBLU INLANTUITE Pascal New(P); x:=6; p^.inf:=x; p^.urm:=prim; p^.ant:=nil; prim^.ant:=p; prim:=p C++ p=new(nod); x=6; p->inf=x; p->urm=prim; p->ant=NULL; prim->ant=p; prim=p   8   7 Ultim NIL   info ant urm
  6 P   7 Ultim NIL   2 Prim NIL NIL INSERARE IN SPATELE LISTEI DUBLU INLANTUITE Pascal New(P); x:=6; p^.inf:=x; p^.urm:=NIL; p^.ant:=ULTIM; ultim^.urm:=p ultim:=p C++ p=new(nod); x=6; p->inf=x; p->urm=NULL; p->ant=ultim; ultim->urm=p ultim=p   8   info ant urm
  6 Q   7 Ultim NIL P INSERARE DUPA UN NOD OARECARE (dupa primul nod)/ LISTA  DUBLU INLANTUITA Pascal New(q); x:=6; q^.inf:=x; q^.urm:=prim^.urm; q^.ant:=prim^.urm; prim^.urm^.ant:=q prim^.urm:=q C++ p=new(nod); x:=6; q->inf=x; q->urm=prim->urm; q->ant=prim->urm; prim->urm->ant=q prim->urm=q   8   2 Prim NIL   info ant urm
  6   7 Ultim NIL   P STERGEREA UNUI NOD DIN INTERIORUL LISTEI  DUBLU INLANTUITE (stergerea nodului P) Pascal temp:=p prim^.urm:=p^.urm; p^.urm.^ant:=p^.ant; dispose(temp) C++ temp=p prim->urm=p->urm; p->urm->ant=p->ant; delete(temp )   8 2 Prim NIL   info ant urm
APLICAŢII ALOCARE DINAMICĂ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

What's hot (20)

Civilizatia medievala
Civilizatia medievalaCivilizatia medievala
Civilizatia medievala
 
Sir de caractere in turbo pascal
Sir de caractere in turbo pascalSir de caractere in turbo pascal
Sir de caractere in turbo pascal
 
Imprumuturi lexicale vechi si noi din diferite tari
Imprumuturi lexicale vechi si noi din diferite tariImprumuturi lexicale vechi si noi din diferite tari
Imprumuturi lexicale vechi si noi din diferite tari
 
Arhitectura romana - scurta prezentare
Arhitectura romana - scurta prezentare Arhitectura romana - scurta prezentare
Arhitectura romana - scurta prezentare
 
Semiconductori
SemiconductoriSemiconductori
Semiconductori
 
Etica. tema 1
Etica. tema 1Etica. tema 1
Etica. tema 1
 
Textulargumentativ
TextulargumentativTextulargumentativ
Textulargumentativ
 
P. soc. 10. stereotipuri, p., d.
P. soc. 10. stereotipuri, p., d.P. soc. 10. stereotipuri, p., d.
P. soc. 10. stereotipuri, p., d.
 
Bunatate
BunatateBunatate
Bunatate
 
Coduri de etica la nivel unversitar
Coduri de etica la nivel unversitarCoduri de etica la nivel unversitar
Coduri de etica la nivel unversitar
 
Fisiere pascal
Fisiere pascalFisiere pascal
Fisiere pascal
 
27.alg ramificare
27.alg ramificare27.alg ramificare
27.alg ramificare
 
Linear data structure concepts
Linear data structure conceptsLinear data structure concepts
Linear data structure concepts
 
Tipul tablou
Tipul tablouTipul tablou
Tipul tablou
 
Jurnalul unui-cdi-nr.1
Jurnalul unui-cdi-nr.1Jurnalul unui-cdi-nr.1
Jurnalul unui-cdi-nr.1
 
Crearea diagramelor in Excel
Crearea diagramelor in ExcelCrearea diagramelor in Excel
Crearea diagramelor in Excel
 
Studiu comparativ Electroliza - Element galvanic
Studiu comparativ Electroliza - Element galvanicStudiu comparativ Electroliza - Element galvanic
Studiu comparativ Electroliza - Element galvanic
 
Metalimbajul BNF. Diagrame sintactice
Metalimbajul BNF.  Diagrame sintacticeMetalimbajul BNF.  Diagrame sintactice
Metalimbajul BNF. Diagrame sintactice
 
Curs TIC.pdf
Curs TIC.pdfCurs TIC.pdf
Curs TIC.pdf
 
Mihai eminescu
Mihai eminescuMihai eminescu
Mihai eminescu
 

Viewers also liked

Manualul profesorului
Manualul profesoruluiManualul profesorului
Manualul profesoruluinatashcka
 
документ Microsoft office_word
документ Microsoft office_wordдокумент Microsoft office_word
документ Microsoft office_wordrojcov
 
Baza de date relatioala
Baza de date relatioalaBaza de date relatioala
Baza de date relatioalarojcov
 
презентация Microsoft office_power_point_(3)[1]
презентация Microsoft office_power_point_(3)[1]презентация Microsoft office_power_point_(3)[1]
презентация Microsoft office_power_point_(3)[1]rojcov
 

Viewers also liked (8)

Analiza algoritmilor. Masurarea volumului
Analiza algoritmilor. Masurarea volumului Analiza algoritmilor. Masurarea volumului
Analiza algoritmilor. Masurarea volumului
 
Manualul profesorului
Manualul profesoruluiManualul profesorului
Manualul profesorului
 
документ Microsoft office_word
документ Microsoft office_wordдокумент Microsoft office_word
документ Microsoft office_word
 
Baza de date relatioala
Baza de date relatioalaBaza de date relatioala
Baza de date relatioala
 
Тип данных Pointer
Тип данных PointerТип данных Pointer
Тип данных Pointer
 
Tipul de date pointer
Tipul de date pointerTipul de date pointer
Tipul de date pointer
 
презентация Microsoft office_power_point_(3)[1]
презентация Microsoft office_power_point_(3)[1]презентация Microsoft office_power_point_(3)[1]
презентация Microsoft office_power_point_(3)[1]
 
Viermi
ViermiViermi
Viermi
 

Similar to Structuri De Date Alocate Dinamic

ORM Definition, Active Records, Eloquent
ORM Definition, Active Records, EloquentORM Definition, Active Records, Eloquent
ORM Definition, Active Records, EloquentPascut Marius Rares
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
 
Arbori de-intervale
Arbori de-intervaleArbori de-intervale
Arbori de-intervaleionutg38
 

Similar to Structuri De Date Alocate Dinamic (6)

ORM Definition, Active Records, Eloquent
ORM Definition, Active Records, EloquentORM Definition, Active Records, Eloquent
ORM Definition, Active Records, Eloquent
 
Cap06
Cap06Cap06
Cap06
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
 
Curs2-POO
Curs2-POOCurs2-POO
Curs2-POO
 
Comenzi utile Linux.pdf
Comenzi utile Linux.pdfComenzi utile Linux.pdf
Comenzi utile Linux.pdf
 
Arbori de-intervale
Arbori de-intervaleArbori de-intervale
Arbori de-intervale
 

Structuri De Date Alocate Dinamic

  • 1. CRITERII DE CLASIFICARE A DATELOR Alocarea memoriei interne Structuri statice Dimensiunea zonei alocate este fixa. Alocarea ei se face in timpul compilarii , in functie de modul in care a fost declarata stuctura, iar in timpul executiei programului nu mai poate fi modificata Structuri dinamice Dimensiunea zonei alocate nu este fixa . Alocarea sau eliberarea zonelor de memorie folosita de structura se face in timpul executiei programului , in functie de numarul de componente ale structurii
  • 2. Implementarea in limbajul de programare Structuri implicite Structura creata la nivel conceptual este implementata la nivelul limbajului de programare. Reprezentarea sa este implicita si nu mai necesita informatii suplimentare pentru localizarea componentelor Structuri explicite Structura creata la nivel conceptual nu este implementata la nivelul limbajului de programare. Reprezentarea se va face folosind structurile implicite implementate, in limbaj, fiind necesare informatii suplimentare pentru localizarea componentelor
  • 3. Dispunerea elementelor in memorie Structuri contigue Elementele sunt dispuse in zone contigue de memorie, care permie localizarea uneia dintre ele folosind o adresa de referinta si deplasarea fata de adresa de referinta Structuri dispersate Elementele sunt dispuse in zone dispersate de memorie, pentru a putea localiza elementele in structura, trebuie sa se memoreze pentru fiecare element si adresa la care se gaseste
  • 4. Dezavantaje structuri statice: deoarece alocarea zonei de memorie se face la compilarea programului, iar in timpul executiei programului pot sa apara urmatoarele cazuri: - spatiul alocat structurii este insuficient - spatiul alocat structurii este mult mai mare decat necesar Avantaje structurii dinamice :alocarea memoriei se face in timpul executiei programului, in functie de numarul de componente ale structurii la acel moment, iar acesta poate fi dezafectat la cererea utilizatorului
  • 5.
  • 6. La nivel conceptual, toate aceste colectii de date reprezinta un sir de date de acelasi tip, care trebuie prelucrate prin inserarea si extragerea de elemente, pastrandu-se o anumita ordine de aranjare a elementelor. Daca la nivel logic s-ar alege solutia de a grupa aceste elemente intr-o structura de date de tip vector, algoritmii de prelucrare, vor necesita multe deplasari de elemente care consuma timp de prelucrare In cazul structurilor care trebuie sa-si pastreze in timpul exploatarii ordonarea dupa un anumit criteriu, mecanismul vectorilor este greoi.In aceste cazuri, se poate alege ca solutie de implementare a structurii de date lista , care nu este o structura fizica de organizare a datelor, ci o structura logica , ce degreveaza programatorul de ordonarea dupa indice a structurii, impusa de vectori. Definitia structurii de date de tip lista Lista= este o structura de date logica, liniara, cu date omogene, in care fiecare element are un succesor si un predecesor, exceptand primul element, care nu are decat succesor si ultimul element care nu are decat predecor
  • 7. Considerăm un nod al listei simplu înlănţuite de forma Type pointer= ^nod nod = record info:tip; urm :pointer; end; Var prim:pointer; Secventa de instructiuni Pascal pentru definirea unui nod al listei Vom utiliza urmatoarele notatii: PRIM – pointerul primului nod al listei, ULT - ultimul nod al listei TEMP –pointer temporar de lucru Secventa de instructiuni C++ pentru definirea unui nod al listei Informatia utila Struct nod { tip_data info nod* urm} Nod* prim Adresa elem.urm.
  • 8. Lista simplu inlantuita Lista dublu inlantuita L a ={(d i ,s i )|d i  D,s i  P} L s ={(p i ,d i ,s i )|d i  D,p i ,s i  P}
  • 9. Stiva (lista LIFO) Coada (lista FIFO) Operatii pe stiva: inserare in capul stivei, stergere din capul stivei, citirea din capul stivei. Operatii specifice: inserare in spate, stergere din fata cozii, citirea din fata cozii. LISTE PARTICULARE
  • 10.
  • 11. 5 Prim 7 10 9 Q Ultim NIL NIL INSERARE IN SPATELE LISTEI Pascal New(Q); x:=9; q^.inf:=x; q^.urm:=NIL; ultim^.urm:=q; ultim:=q C++ q=new(nod); x=9; q->info=x; q->urm:=NULL; ultim->urm=q ultim:=q;
  • 12. 5 Prim 7 m INSERARE DUPA UN NOD (M) Pascal New(p); x:=9; p^.inf:=x; p^.urm:=m^.urm; m^.urm:=p C++ p=new(nod); x=9; p->info=x; p->urm:=m->urm; m->=urm=p; 9 P 10 Ultim NIL 9
  • 13. 5 Prim 10 Ultim NIL temp 7 9 Prim STERGEREA PRIMULUI NOD Pascal temp:=prim prim:=prim^.urm dispose(temp) C++ temp=prim prim:=prim->urm delete (temp)
  • 14. 5 Prim 10 ultim NIL 7 9 NIL STERGEREA ultimului NOD al listei ultim P Pascal temp:=ultim p^.urm:=nil; dispose(temp) ultim:=p C++ temp=ultim p->urm=NULL; delete(temp) ultim:=p
  • 15. 6 P 2 Prim NIL NIL INSERARE IN FATA LISTEI DUBLU INLANTUITE Pascal New(P); x:=6; p^.inf:=x; p^.urm:=prim; p^.ant:=nil; prim^.ant:=p; prim:=p C++ p=new(nod); x=6; p->inf=x; p->urm=prim; p->ant=NULL; prim->ant=p; prim=p 8 7 Ultim NIL info ant urm
  • 16. 6 P 7 Ultim NIL 2 Prim NIL NIL INSERARE IN SPATELE LISTEI DUBLU INLANTUITE Pascal New(P); x:=6; p^.inf:=x; p^.urm:=NIL; p^.ant:=ULTIM; ultim^.urm:=p ultim:=p C++ p=new(nod); x=6; p->inf=x; p->urm=NULL; p->ant=ultim; ultim->urm=p ultim=p 8 info ant urm
  • 17. 6 Q 7 Ultim NIL P INSERARE DUPA UN NOD OARECARE (dupa primul nod)/ LISTA DUBLU INLANTUITA Pascal New(q); x:=6; q^.inf:=x; q^.urm:=prim^.urm; q^.ant:=prim^.urm; prim^.urm^.ant:=q prim^.urm:=q C++ p=new(nod); x:=6; q->inf=x; q->urm=prim->urm; q->ant=prim->urm; prim->urm->ant=q prim->urm=q 8 2 Prim NIL info ant urm
  • 18. 6 7 Ultim NIL P STERGEREA UNUI NOD DIN INTERIORUL LISTEI DUBLU INLANTUITE (stergerea nodului P) Pascal temp:=p prim^.urm:=p^.urm; p^.urm.^ant:=p^.ant; dispose(temp) C++ temp=p prim->urm=p->urm; p->urm->ant=p->ant; delete(temp ) 8 2 Prim NIL info ant urm
  • 19.