Algoritmi și Structuri de Date

Curs
9/10 (6 voturi)
Domeniu: Calculatoare
Conține 22 fișiere: doc
Pagini : 59 în total
Cuvinte : 15606
Mărime: 288.90KB (arhivat)
Publicat de: Aurel Axinte Lungu
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Daniela Joita
Algoritmi si structuri de date

Cuprins

  1. Cuprins
  2. Modulul 0. Alocare dinamica in limbajul C
  3. 0. Pointeri si alocare dinamica. Tipul de date struct
  4. 0.1 Pointeri si alocare dinamica
  5. 0.2 Tipul struct
  6. Modulul I. Structuri de date liniare
  7. 1. Liste liniare
  8. 1.1 Alocarea secventiala
  9. 1.2 Alocarea inlantuita
  10. 2. Stive
  11. 2.1 Alocarea secventiala
  12. 2.2 Alocarea inlantuita
  13. 3. Cozi
  14. 3.1 Alocarea secventiala
  15. 3.2 Alocarea inlantuita
  16. 4. Liste circulare
  17. 5. Liste dublu inlantuite
  18. Modulul II. Structuri de date neliniare
  19. 6. Grafuri
  20. 6.1 Notiuni generale
  21. 6.2 Reprezentarea grafurilor
  22. 7. Arbori
  23. 7.1 Reprezentare
  24. 7.2 Traversare
  25. 8. Arbori binari
  26. 8.1 Notiuni generale
  27. 8.2 Reprezentare
  28. 8.3 Traversare
  29. Modulul III. Analiza algoritmilor
  30. 9. Analiza eficientei algoritmilor
  31. Modulul IV. Algoritmi de sortare
  32. 10. Sortare prin numarare
  33. 11. Sortare prin inserare
  34. 12. Sortare prin interschimbare
  35. 12.1 Bublesort
  36. 12.2 Quicksort
  37. 13. Sortare prin selectie
  38. 14. Mergesort
  39. Modulul V. Algoritmi de cautare
  40. 15. Cautare secventiala
  41. 16. Cautare binara
  42. 17. Arbori binari de cautare.
  43. 17.1 Cautare in arbori binari de cautare
  44. 17.2 Inserare si stergere arbori binari de cautare

Extras din curs

Modulul 0. Alocare dinamica in limbajul C

Capitolul 0. Pointeri si alocare dinamica. Tipul de date struct

0.1 Pointeri si alocare dinamica

O problema care apare in momentul declararii unui sir era aceea ca dimensiunea sirului trebuia sa fie constanta, iar daca doream sa rulam programul pentru siruri de dimensiuni diferite atunci trebuia sa definim o dimensiune suficient de mare a sirului si in program sa folosim numai un numar de elemente ale sirului, numar introdus de utilizator la fiecare rulare a programului, celelalte elemente nefiind folosite si deci ocupand inutil un spatiu de memorie. Pentru rezolvarea acestei probleme exista o modalitate de alocare a memoriei ce se numeste alocare dinamica, adica alocare a memoriei in momentul rularii, permitand programului sa isi ajusteze capacitatea de memorare a datelor in functie de necesitatile utilizatorului.

In C sunt disponibile patru functii care pot aloca atat spatiu cat este dorit, pot modifica dimensiunea unui sir existent sau pot elibera zone de memorie alocate anterior. Aceste functii sunt:

- malloc

- calloc

- realloc

- free

Toate apartin bibliotecii stdlib.h.

Prototipul functiei malloc este:

void *malloc(size_t dimensiune);

malloc rezerva un numar de octeti specificat de catre parametrul dimensiune, in locatii de memorie consecutive returnand un pointer la primul octet sau pointerul NULL (adica pointerul 0, care nu puncteaza nimic) daca nu poate aloca memoria solicitata. Functia returneaza un pointer de tip void adica in momentul in care acest pointer este atribuit unui pointer de un anumit tip atunci valoarea pointerului returnat de catre functia malloc se va transforma in tipul corespunzator. size_t corespunde tipului intreg fara semn, fiind tipul rezultatului pe care il returneaza operatorul sizeof. Acest tip este definit in stddef.h.

Exemplu:

int *p;

p = malloc(5 * sizeof (int) );

malloc va aloca 5*4=20 de octeti (am presupus ca dimensiunea int este de patru octeti) va returna un pointer la primul octet si este transformat in pointer de tip int memorat in pointerul p de tip int.

Deci p este de fapt un pointer la un sir de 5 variabile int. Putem initializa elementele sirului, putem efectua orice prelucrare a elementelor sirului ca si cum ele ar fi fost alocate in momentul alocarii.

Prototipul functiei calloc este:

void *calloc(size_t n, size_t dimensiune);

Functia calloc aloca spatiu de memorare pentru n elemente, fiecare de marimea dimensiune. Fiecare element este initializat cu zero. Functia returneaza un pointer la spatiul alocat si NULL daca nu este spatiu suficient in memorie sau daca n = 0 sau dimensiune = 0.

Exemplu:

float *p;

p = calloc(10, sizeof(float) );

Prototipul functiei realloc este:

void *realloc(void *p, size_t dimensiune);

Functia realloc modifica marimea unui spatiu pentru date deja existente. p este un pointer catre o zona de memorie deja alocata. Daca p este NULL functia realloc functioneaza ca si malloc, alocand un bloc de atatia octeti cati sunt precizati de dimensiune. Daca p nu este NULL atunci p trebuie sa fie un pointer returnat de un apel anterior al uneia din functiile malloc, calloc sau realloc. Parametrul dimensiune determina noua marime in octeti a blocului de memorie alocat. Acest proces are loc fara sa se stearga datele existente. Daca zona de memorie existenta nu poate fi extinsa fara sa se suprapuna cu alte date, intreaga zona este copiata la o alta locatie iar zona veche este eliberata. Functia returneaza un pointer la noua zona de memorie alocata sau NULL.

Exemplu:

alocdinam.C

Prototipul functiei free este:

void free(void *p);

Functia free elibereaza blocul de memorie indicat de pointerul p, unde p trebuie sa fie un pointer returnat de un apel anterior al uneia din functiile malloc, calloc sau realloc. Functia free nu poate fi utilizata pentru eliberarea memoriei alocate de variabile in momentul compilarii. Dupa apelarea functiei free blocul eliberat este disponibil pentru alocare. Un pointer NULL ca argument este ignorat.

Conținut arhivă zip

  • Algoritmi si Structuri de Date
    • Cuprins.doc
    • Cuvant inainte.doc
    • Modulul 0 - capitolul0.doc
    • Modulul I - capitolul1.doc
    • Modulul I - capitolul2.doc
    • Modulul I - capitolul3.doc
    • Modulul I - capitolul4.doc
    • Modulul I - capitolul5.doc
    • Modulul II - capitolul6.doc
    • Modulul II - capitolul7.doc
    • Modulul II - capitolul8.doc
    • Modulul III -capitolul9.doc
    • Modulul IV - capitolul10.doc
    • Modulul IV - capitolul13.doc
    • Modulul IV - capitolul14.doc
    • Modulul IV -capitolul12.doc
    • Modulul IV- capitolul11.doc
    • Modulul V - capitolul15.doc
    • Modulul V - capitolul16.doc
    • Modulul V - capitolul17.doc
    • Probleme propuse.doc
    • ~$uprins.doc

Alții au mai descărcat și

Soft pentru Algoritmi Fundamentali de Determinare a Unui Flux de Cost Minim

“Diferența dintre școală și viață? În școală, înveți o lecție, apoi dai un test. În viață, ai de dat un test care te învață o lecție.” (Tom...

Proiectarea unei soluții de comerț electronic

Comertul electronic reprezinta multitudinea proceselor software si comerciale necesare proceselor business sa functioneze numai, sau în primul...

Șabloane de proiectare a interfețelor utilizator pentru aplicații web

Capitolul 1 Introducere Lucrarea prezinta sabloanele de proiectare , ce sunt acestea si cum ne ajuta ele in rezolvarea problemelor de proiectare...

Baze de Date - Compania Carte 2009

„Cartea 2009” este o companie care se ocupa cu distributia de carte in Romania. „Cartea 2009” dispune de un lant de peste 300 de librarii situate...

Structuri de Date și Algoritmi

1 Tema:Implimentarea tipului abstract de date.Tabloul de structuri. 2 Sarcina:De implimentat tipul abstract de date,tablou de structuri si de...

Structuri de Date și Algoritmi

1. Conceptul de dată În informatică, prin dată, se desemnează un model de reprezentare a informaţiei, model cu care se poate opera pentru a obţine...

Structuri de Date

CURS 1. - STRUCTURI DE DATE Scop : prezentarea celor mai importante structuri de date ce pot fi utilizate pentru modelarea datelor din aplicatii....

Structuri de Date și Algoritmi

Curs 1 Structuri de date Structurile de date erau definite în limbajul C drept organizarea datelor primare. În limbajul C++, acestea reprezinta o...

Te-ar putea interesa și

Proiect Algoritmi și Structuri de Date

<<INTRODUCERE>> Procesele desfăşurate într-o activitate organizată nu au loc la întam-plare, ci sunt declanşate de anumite informaţii care...

Algoritmi și Structuri de Date

Sistem informational = ansamblu de elemente interconectate si interconditionate între ele în vederea realizarii unui scop; este un ansamblu de...

Algoritmi și Structuri de Date

Introducere: Semiotica se ocupã cu studiul semnelor în natura si în societate. Semnul nu este o calitate în sine a unui obiect, ci o functie pe...

Algoritmi și Structuri de Date

Capitolul I Sistem informaţional - sistem informatic Un sistem este un ansamblu de elemente care pot fi conectate prin diferite tipuri de...

Proiect - Algoritmi și Structuri de Date

1. TEORIE Sistemul informaţional-informatic Activitatea desfasurata intr-un sistem organizat, in vederea realizarii unui obiectiv poate fi...

Structuri de Date și Algoritmi

1 Tema:Implimentarea tipului abstract de date.Tabloul de structuri. 2 Sarcina:De implimentat tipul abstract de date,tablou de structuri si de...

Structuri de Date și Analiza Algoritmilor

8. Arbori 8.1. Arbori generalizaţi 8.1.1. Definiţii În definirea noţiunii de arbore se porneşte de la noţiunea de vector. Fie V o mulţime având...

Structuri de Date și Algoritmi

1. Conceptul de dată În informatică, prin dată, se desemnează un model de reprezentare a informaţiei, model cu care se poate opera pentru a obţine...

Ai nevoie de altceva?