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

3 2 Interfete Grafice
3 2 Interfete Grafice3 2 Interfete Grafice
3 2 Interfete Grafice
Vasile Filat
 
Bunuri libere şi bunuri economice
Bunuri libere şi bunuri economiceBunuri libere şi bunuri economice
Bunuri libere şi bunuri economice
Andra Modreanu
 
Proiectdidactictransmiterepowerpoint
ProiectdidactictransmiterepowerpointProiectdidactictransmiterepowerpoint
Proiectdidactictransmiterepowerpoint
rojcov
 
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţieiCodificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Colegiul de Industrie Usoara
 
Curiozitati matematice
Curiozitati matematiceCuriozitati matematice
Curiozitati matematice
mkovacsbarac
 

What's hot (20)

3 2 Interfete Grafice
3 2 Interfete Grafice3 2 Interfete Grafice
3 2 Interfete Grafice
 
Bunuri libere şi bunuri economice
Bunuri libere şi bunuri economiceBunuri libere şi bunuri economice
Bunuri libere şi bunuri economice
 
Cantitatea de informatie
Cantitatea de informatieCantitatea de informatie
Cantitatea de informatie
 
Campul electrostatic.
Campul electrostatic.Campul electrostatic.
Campul electrostatic.
 
Metalimbajul BNF. Diagrame sintactice
Metalimbajul BNF.  Diagrame sintacticeMetalimbajul BNF.  Diagrame sintactice
Metalimbajul BNF. Diagrame sintactice
 
Initiere in turbo pascal
Initiere in turbo pascalInitiere in turbo pascal
Initiere in turbo pascal
 
Masele plastice......
Masele plastice......Masele plastice......
Masele plastice......
 
Proiectdidactictransmiterepowerpoint
ProiectdidactictransmiterepowerpointProiectdidactictransmiterepowerpoint
Proiectdidactictransmiterepowerpoint
 
Utilizarea functiilor in Excel
Utilizarea functiilor in ExcelUtilizarea functiilor in Excel
Utilizarea functiilor in Excel
 
Campul magnetic
Campul magneticCampul magnetic
Campul magnetic
 
Un mod sanatos de viata 1
Un mod sanatos de viata 1Un mod sanatos de viata 1
Un mod sanatos de viata 1
 
Reacţii chimice
Reacţii chimiceReacţii chimice
Reacţii chimice
 
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţieiCodificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
 
Baza de date
Baza de dateBaza de date
Baza de date
 
Lentile
LentileLentile
Lentile
 
Poliedre
PoliedrePoliedre
Poliedre
 
Proceduri
Proceduri Proceduri
Proceduri
 
Sinteze de-bac
Sinteze de-bacSinteze de-bac
Sinteze de-bac
 
Functii si-proceduri
Functii si-proceduriFunctii si-proceduri
Functii si-proceduri
 
Curiozitati matematice
Curiozitati matematiceCuriozitati matematice
Curiozitati matematice
 

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 (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.