Sunteți pe pagina 1din 20

Limbajul C – Aplicații

Alocare dinamică. Structuri de date. Pointeri

Grigore ALBEANU
g.albeanu.mi@spiruharet.ro

Versiunea 2018 G. Albeanu, Fundamentele programării - 1


Limbajul C - part 4
Cuprins
◼ Clase de memorare (recapitulare)
◼ Resurse pentru gestiunea memoriei: alloc.h, stdlib.h
◼ Funcția malloc()
◼ Funcția realloc()
◼ Funcția calloc()
◼ Structuri de date dinamice
◼ Diverse, dar în legătură cu pointerii

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 2


C - part 4
Clase de memorare
◼ Auto
◼ Static
◼ Register
◼ HEAP

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 3


C - part 4
#include (alloc.h, stdlib.h): malloc
typedef unsigned long size_t;
void* calloc (size_t, size_t);
void* malloc (size_t);
void* realloc (void*, size_t);
void free (void*);

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 4


C - part 4
#include (alloc.h, stdlib.h): realloc
typedef unsigned long size_t;
void* calloc (size_t, size_t);
void* malloc (size_t);
void* realloc (void*, size_t);
void free (void*);

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 5


C - part 4
#include (alloc.h, stdlib.h): calloc

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 6


C - part 4
Structuri de date definite recursiv
◼ Liste (simple, duble, liniare, circulare)
◼ Stive, cozi simple, cozi speciale
◼ Arbori (oarecare, binari, quad-tree, oct-tree,
etc.)
◼ Grafuri (orientate/digrafuri, neorientate)
◼ Aplicații: Sortare prin inserție în listă; Explorarea
grafurilor; Arbori de sortare; Sortare topologică.

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 7


C - part 4
Liste – struct-uri recursive

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 8


C - part 4
Stive si cozi

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 9


C - part 4
Operatii - inserare / cautare

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 10


C - part 4
Codificare în C – o variantă

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 11


C - part 4
Structuri arborescente – definiții

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 12


C - part 4
Structuri arborescente – reprezentări - 1

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 13


C - part 4
Structuri arborescente – reprezentări 2

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 14


C - part 4
Modalități de explorare

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 15


C - part 4
Arbore de sortare

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 16


C - part 4
Arbore de sortare – implementare C

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 17


C - part 4
Grafuri

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 18


C - part 4
Sortare topologica - temă
◼ O sortare topologică a vârfurilor unui graf
orientat aciclic este o operație de ordonare
liniară a vârfurilor, astfel încât, dacă exista un
arc ( i, j ), atunci i apare înaintea lui j în
această ordonare.
◼ http://infoarena.ro/problema/sortaret

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 19


C - part 4
Bibliografie
◼ G. Albeanu, Algoritmi si limbaje de
programare, Editura FRM, 2000
◼ Ioan Tomescu, Data structures, Editura
Universitatii din Bucuresti, 1997
◼ Donald Knuth, Arta programării
calculatoarelor.

Versiunea 2018 G. Albeanu, Fundamentele programării - Limbajul 20


C - part 4

S-ar putea să vă placă și