|
Vectori de biti
Atunci cand elementele unui vector sau unei matrice au valori binare este posibila o memorare mai compacta, folosind cate un singur bit pentru fiecare element din vector. Exemplul clasic este al matricelor de adiacente prin care se reprezinta grafuri de relatii (fara costuri asociate muchiilor); elementul a[i][j] arata prezenta (1) sau absenta (0) unei muchii intre varfurile i si j.
In exemplul urmator matricea de adiacenta este un vector de biti, obtinut prin memorarea succesiva a liniilor din matrice. Functia "getbit" arata prezenta sau absenta unui arc de la nodul i la nodul j (graful este orientat). Functia "setbit" permite adaugarea sau eliminarea de arce la/din graf. Nodurile sunt numerotate de la 1.
typedef struct graf;
// elementul [i][j] din matrice graf primeste valoarea val (0 sau 1)
void setbit (graf & g, int i, int j, int val)
// valoare element [i][j] din matrice graf
int getbit (graf g, int i, int j )
// citire date si creare matrice graf
void citgraf (graf & g ) while (1);
// afisare matr de adiacente graf
void scrgraf (graf g)