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

Cititorul din pestera alexandra
Cititorul din pestera alexandraCititorul din pestera alexandra
Cititorul din pestera alexandraefimenia
 
Efectele curentului electric asupra corpului uman
Efectele curentului electric asupra corpului umanEfectele curentului electric asupra corpului uman
Efectele curentului electric asupra corpului umang_beata
 
Stimularea creativitatii elevilor prin activitati outdoor
Stimularea creativitatii elevilor prin activitati outdoorStimularea creativitatii elevilor prin activitati outdoor
Stimularea creativitatii elevilor prin activitati outdoorprimariacatunele
 
flora-si-fauna-romanieidocx.pdf
flora-si-fauna-romanieidocx.pdfflora-si-fauna-romanieidocx.pdf
flora-si-fauna-romanieidocx.pdfSuportAfacere
 
Limba si literatura romana clasele a iii-a - a iv-a
Limba si literatura romana clasele a iii-a - a iv-aLimba si literatura romana clasele a iii-a - a iv-a
Limba si literatura romana clasele a iii-a - a iv-aAncaTruta1
 
Enumerated data types
Enumerated data typesEnumerated data types
Enumerated data typesAnkit Sinha
 
C language (Collected By Dushmanta)
C language  (Collected By Dushmanta)C language  (Collected By Dushmanta)
C language (Collected By Dushmanta)Dushmanta Nath
 
Առաջին համաշխարհային պատերազմ
Առաջին համաշխարհային պատերազմԱռաջին համաշխարհային պատերազմ
Առաջին համաշխարհային պատերազմmariqechechyan
 
Circular linked list
Circular linked listCircular linked list
Circular linked listdchuynh
 
1 1 Purtatorii De Informatie
1 1 Purtatorii De Informatie1 1 Purtatorii De Informatie
1 1 Purtatorii De InformatieVasile Filat
 

What's hot (20)

5bit field
5bit field5bit field
5bit field
 
Cititorul din pestera alexandra
Cititorul din pestera alexandraCititorul din pestera alexandra
Cititorul din pestera alexandra
 
Danemarca
DanemarcaDanemarca
Danemarca
 
Efectele curentului electric asupra corpului uman
Efectele curentului electric asupra corpului umanEfectele curentului electric asupra corpului uman
Efectele curentului electric asupra corpului uman
 
Stimularea creativitatii elevilor prin activitati outdoor
Stimularea creativitatii elevilor prin activitati outdoorStimularea creativitatii elevilor prin activitati outdoor
Stimularea creativitatii elevilor prin activitati outdoor
 
Data structures
Data structuresData structures
Data structures
 
flora-si-fauna-romanieidocx.pdf
flora-si-fauna-romanieidocx.pdfflora-si-fauna-romanieidocx.pdf
flora-si-fauna-romanieidocx.pdf
 
Limba si literatura romana clasele a iii-a - a iv-a
Limba si literatura romana clasele a iii-a - a iv-aLimba si literatura romana clasele a iii-a - a iv-a
Limba si literatura romana clasele a iii-a - a iv-a
 
Data structure using c++
Data structure using c++Data structure using c++
Data structure using c++
 
Stack - Data Structure
Stack - Data StructureStack - Data Structure
Stack - Data Structure
 
Enumerated data types
Enumerated data typesEnumerated data types
Enumerated data types
 
C language (Collected By Dushmanta)
C language  (Collected By Dushmanta)C language  (Collected By Dushmanta)
C language (Collected By Dushmanta)
 
Առաջին համաշխարհային պատերազմ
Առաջին համաշխարհային պատերազմԱռաջին համաշխարհային պատերազմ
Առաջին համաշխարհային պատերազմ
 
Circular linked list
Circular linked listCircular linked list
Circular linked list
 
Stacks and Queue - Data Structures
Stacks and Queue - Data StructuresStacks and Queue - Data Structures
Stacks and Queue - Data Structures
 
1 1 Purtatorii De Informatie
1 1 Purtatorii De Informatie1 1 Purtatorii De Informatie
1 1 Purtatorii De Informatie
 
Cantitatea de informatie
Cantitatea de informatieCantitatea de informatie
Cantitatea de informatie
 
Threaded Binary Tree.pptx
Threaded Binary Tree.pptxThreaded Binary Tree.pptx
Threaded Binary Tree.pptx
 
Recursive functions in C
Recursive functions in CRecursive functions in C
Recursive functions in C
 
Data Structure (Circular Linked List)
Data Structure (Circular Linked List)Data Structure (Circular Linked List)
Data Structure (Circular Linked List)
 

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 (9)

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]
 
Sir de caractere in turbo pascal
Sir de caractere in turbo pascalSir de caractere in turbo pascal
Sir de caractere in turbo pascal
 
Viermi
ViermiViermi
Viermi
 

Similar to Structuri De Date Alocate Dinamic

Liste înlănţuite
Liste  înlănţuiteListe  înlănţuite
Liste înlănţuitealla turcanu
 
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 (7)

Liste înlănţuite
Liste  înlănţuiteListe  înlănţuite
Liste înlănţuite
 
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.