-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdegree.c
36 lines (32 loc) · 963 Bytes
/
degree.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# include "main.h"
/* Funcion que dado un arreglo de lista de adyacencias */
/* y el número de vértices del grafo, retorna un arreglo */
/* de tuplas vértice-grado */
void degree(row_vertex main_col[], int vertex_num, tuple deg_vert[]) {
int i;
int count = 0;
linked_list * aux;
for(i = 0; i < vertex_num; i++) {
aux = (linked_list *) main_col[i].pt; // Apunta al primer adyacente
while (aux != NULL) {
count++;
aux = aux->next;
}
// Se asigna una tuple vertice-grado al arreglo deg_vert
tuple new_tuple = { i, count };
deg_vert[i] = new_tuple;
count = 0;
}
}
/* Funcion que compara dos elementos tuple segun los */
/* grados de los vértices. */
int compare(const void * __a, const void * __b) {
tuple * a = (tuple *) __a;
tuple * b = (tuple *) __b;
if (a->degree < b->degree)
return 1;
if (a->degree > b->degree)
return -1;
if (a->degree == b->degree)
return 0;
}