diff options
Diffstat (limited to 'semestre 3/structures des données/td/td7/exo2.c')
| -rw-r--r-- | semestre 3/structures des données/td/td7/exo2.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/semestre 3/structures des données/td/td7/exo2.c b/semestre 3/structures des données/td/td7/exo2.c new file mode 100644 index 0000000..3e67451 --- /dev/null +++ b/semestre 3/structures des données/td/td7/exo2.c @@ -0,0 +1,39 @@ +// complexite = O(2n) = O(n) +void degre_matrice(int** M, int n, int u, int* deg_e, int* deg_s){ + for (int i = 0; i < n; i++) if (M[u][i]) (*deg_e)++; + for (int i = 0; i < n; i++) if (M[i][u]) (*deg_s)++; +} + +typedef struct Cell{ + int to; + struct Cell* next; +} Cell; + +typedef struct List{ + int val; + Cell* linked; +} List; + +// complexite = O(degre max de n) +int degre_entrant_LA(List** l, int n, int u){ + int acc = 0; + Cell* c = l[u]->linked; + while (c){ + acc++; + c = c->next; + } + return acc; +} + +// complexite = O(n+(degre max de n)) +int degre_sortant_LA(List** l, int n, int u){ + int acc = 0; + for (int i = 0; i < n; i++){ + Cell* c = l[i]->linked; + while (c){ + if (c->to == u) acc++; + c = c->next; + } + } + return acc; +} |
