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 Intr-o biblioteca, exista o colectie de carti organizate in ordinea alfabetica a autorilor.Un  cititor poate imprumuta o carte(se extrage din colectie)sau poate inapoia o carte ( se insereaza in colectie).Toate  aceste operatii trebuie executate astfel incat sa se pastreze organizarea in ordine alfabetica a autorilor. La o benzinarie s-a format o coada de asteptare.Masinile sunt servite in ordinea venirii.Prima masina sosita este prima servita, iar ultima masina venita se aseaza la coada.Toate aceste operatii trebuie executate astfel incat sa se pastreze ordinea in care au sosit masinile si s-au  asezat la coada Intr-o stiva de carti, volumele sunt asezate in ordine alfabetica a titlurilor.Trebuie extrasa din stiva o carte fara a deranja modul in care sunt ordonate cartile in stiva
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 Considerăm o listă simplu înlănţuită în care  primul element al listei este recunoscut prin  vb. pointer PRIM  iar ultimul element al listei ULT 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Ă Cuvinte ordonate Inmultirea  a 2 numere mari suma  a 2 polinoame Inmultirea  a 2 polinoame Schimbarea sensului  sagetilor  într-o listă stergerea  elementelor nule

More Related Content

PPTX
Matematicieni de seama
PPT
prezentare chimie Bercaru Georgiana
PPT
PPTX
Apele Republicii Moldova
PPT
Raspundere si responsabilitate
DOC
Substantivul
PPTX
Grecia
PPTX
6. Hidrografia Europei și a României.pptx
Matematicieni de seama
prezentare chimie Bercaru Georgiana
Apele Republicii Moldova
Raspundere si responsabilitate
Substantivul
Grecia
6. Hidrografia Europei și a României.pptx

What's hot (20)

PDF
Programa scolara tic-st-sociale_11
PPTX
Semnifcații ale scenei fântânii în ”povestea lui harap alb”
DOCX
Scrisoare de recomandare AN
PPT
Modulul 1 ecdl
PPT
Indicatoare rutiere
PDF
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
PPT
Formarea constiintei istorice romana
PPTX
curentul alternativ.pptx
PDF
Manual psihologie clasa a x a
PPTX
Incluziune adaptari curriculare_2015 (2) (1)
PPT
Petrolul -Chimie
PPTX
Proiectarea de lungă durată și proiectarea de scurtă durată
DOC
Planificare orientativa proiect toamna
PPTX
Abordări trans-, pluri și inter-disciplinare în baza manualului www.literatur...
PDF
„Riga Crypto și lapona Enigel” de Ion Barbu.pdf
PPT
Antonio vivaldi
PDF
TESTE BAC ANTRENAMENT-GEOGRAFIE 2021 REZOLVATE
PPS
Structura calculatorului
PDF
Plan de-afaceri
PDF
Curs 9 algoritmul dijkstra
Programa scolara tic-st-sociale_11
Semnifcații ale scenei fântânii în ”povestea lui harap alb”
Scrisoare de recomandare AN
Modulul 1 ecdl
Indicatoare rutiere
Brosura- Noi tehnologii web 2.0 şi instrumente TIC moderne pentru predare- în...
Formarea constiintei istorice romana
curentul alternativ.pptx
Manual psihologie clasa a x a
Incluziune adaptari curriculare_2015 (2) (1)
Petrolul -Chimie
Proiectarea de lungă durată și proiectarea de scurtă durată
Planificare orientativa proiect toamna
Abordări trans-, pluri și inter-disciplinare în baza manualului www.literatur...
„Riga Crypto și lapona Enigel” de Ion Barbu.pdf
Antonio vivaldi
TESTE BAC ANTRENAMENT-GEOGRAFIE 2021 REZOLVATE
Structura calculatorului
Plan de-afaceri
Curs 9 algoritmul dijkstra
Ad

Viewers also liked (9)

PPT
Analiza algoritmilor. Masurarea volumului
PDF
Manualul profesorului
DOCX
документ Microsoft office_word
DOCX
Baza de date relatioala
PPTX
Тип данных Pointer
PPTX
Tipul de date pointer
PPT
презентация Microsoft office_power_point_(3)[1]
PPTX
Sir de caractere in turbo pascal
PPTX
Viermi
Analiza algoritmilor. Masurarea volumului
Manualul profesorului
документ Microsoft office_word
Baza de date relatioala
Тип данных Pointer
Tipul de date pointer
презентация Microsoft office_power_point_(3)[1]
Sir de caractere in turbo pascal
Viermi
Ad

Similar to Structuri De Date Alocate Dinamic (7)

DOCX
Liste înlănţuite
PPT
ORM Definition, Active Records, Eloquent
PDF
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
ODP
PDF
Comenzi utile Linux.pdf
DOCX
Arbori de-intervale
Liste înlănţuite
ORM Definition, Active Records, Eloquent
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Comenzi utile Linux.pdf
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. 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 Intr-o biblioteca, exista o colectie de carti organizate in ordinea alfabetica a autorilor.Un cititor poate imprumuta o carte(se extrage din colectie)sau poate inapoia o carte ( se insereaza in colectie).Toate aceste operatii trebuie executate astfel incat sa se pastreze organizarea in ordine alfabetica a autorilor. La o benzinarie s-a format o coada de asteptare.Masinile sunt servite in ordinea venirii.Prima masina sosita este prima servita, iar ultima masina venita se aseaza la coada.Toate aceste operatii trebuie executate astfel incat sa se pastreze ordinea in care au sosit masinile si s-au asezat la coada Intr-o stiva de carti, volumele sunt asezate in ordine alfabetica a titlurilor.Trebuie extrasa din stiva o carte fara a deranja modul in care sunt ordonate cartile in stiva
  • 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. Inserare în faţa listei Considerăm o listă simplu înlănţuită în care primul element al listei este recunoscut prin vb. pointer PRIM iar ultimul element al listei ULT 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
  • 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. APLICAŢII ALOCARE DINAMICĂ Cuvinte ordonate Inmultirea a 2 numere mari suma a 2 polinoame Inmultirea a 2 polinoame Schimbarea sensului sagetilor într-o listă stergerea elementelor nule