This is an old revision of the document!
In continuare vom mentiona cateva conventii/sfaturi/reguli pe care trebuie sa le aveti in vedere pentru restul semestrului. Unele precizari sunt specifice laboratoarelor de grafuri, altele sunt generale.
n = numar de noduri
m = numar de muchii
adj[node] = lista de adiacenta a nodului node
Recomandam varianta cu vector/ArrayList.
Precizari:
Exemplu de problema grava: [C++]: void f() { int v[n]; } (alocare de dimensiune variabila pe stiva), poate crapa stiva! (n poate fi mare). Interzicem folosirea acestui tip de alocare la PA. Pentru acest exemplu, scheletul va genera si o eroare de compilare, pentru a va atrage atentia ca NU ar trebui sa folositi acest tip de alocare, daca n poate sa fie mare! (grafuri mari)
Observatie: Precizarile mentionate sunt valabile doar pentru contextul PA, unde facem algoritmi eficienti si care dorim sa mearga pe dimensiuni cat mai mari! Asta nu inseamna ca in alte contexte (ex. multi-threaded) nu poti folosi VLA (variable length array on stack).
Scopul acestui paragraf este sa va atraga atentia asupra alocarii corespunzatoare a datelor la PA , astfel incat sa evitati erori de run time pe care sa nu vi le puteti explica.