Matrice creuse avec les listes linéaires chainées
Fermé
Ra_Wa
Messages postés
1
Date d'inscription
lundi 21 mars 2016
Statut
Membre
Dernière intervention
21 mars 2016
-
21 mars 2016 à 17:19
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 30 mars 2016 à 19:06
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 30 mars 2016 à 19:06
A voir également:
- Matrice creuse avec les listes linéaires chainées
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
- Vous ne pouvez pas modifier une partie de matrice - Forum Excel
- Lettre creuse word ✓ - Forum Bureautique
- Sql lister les tables ✓ - Forum Programmation
- Afficher une matrice en c ✓ - Forum C
1 réponse
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
Modifié par mamiemando le 30/03/2016 à 19:08
Modifié par mamiemando le 30/03/2016 à 19:08
Bonjour,
Il faudrait nous donner la définition de tes structures pour plus de clarté. Si j'ai bien compris ça doit être quelque chose du genre :
Du coup itérer dessus revient à faire :
Bonne chance
Il faudrait nous donner la définition de tes structures pour plus de clarté. Si j'ai bien compris ça doit être quelque chose du genre :
typedef struct _cell_t { unsigned column_index; double value; struct _cell_t * next_cell; // NULL si dernière cellule de la ligne }; typedef struct _line_t { unsigned line_index; cell_t * first_cell; // Non NULL si la ligne est non vide. struct _line_t * next_line; // NULL si dernière ligne } line_t; typedef struct _sparse_matrix_t { line_t * data; } sparse_matrix_t;
Du coup itérer dessus revient à faire :
double sum(const sparse_matrix_t * m) { double sum = 0; for (line_t * line = m->data ; line ; line = line->next_line) { // unsigned i = line->line_index; for (cell_t * cell = line->cell ; cell ; cell = cell->next_cell) { // unsigned j = cell->column_index; sum += cell->value; } } return sum; }
Bonne chance