Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
typedef struct ele
{
   int l; /*indice de la ligne*/
   int c; /*indice de la colonne*/
   float e; /*l'element d'indice(l,c)*/
   struct ele *suiv; /*null ou adresse de la prochaine stucture
}ELE;
 
typedef el 
{
   int lig; /*nbre de ligne de la matrice reelle*/
   int col; /*nbre de ligne de la matrice reelle*/
   ELE *M ;/*adrss de la premiére variable de type ELE qui contient les informations sur l'élément non nul de la matrice réelle*/
}MATRIX;
1 .si A est une matrice (n,m) qui ne contient que peu d'elements non nuls cette structure MATRIX est une alternative pour la gestion des matrice compacts.
Le principe consite à ne conserver que les elmts non nuls de A.(parcours ligne par ligne)
Une matrice creuse est ici défini par une variable de type MATRIX avec lig et col le nombre deligne et de colonnes de la matrice réelle A(lig=n,col=m).
le role des variables de type ELE est de contenir dans e la valeur de l'élémentde la matrice réelle A(i,j) si A(i,j) non nul et dans ce cas l va contenir
la valeur de i,c celle de j et enfin suiv est un pointei qui indique l'adresse du prochain élément non nul de la matrice relle A s'il existe ou NULL.
2.Travail demandé
Ecrire les fonctions suivantes:
passage1:pour passer d'une matrice réelle à sa forme compact.
passage2:pour passer de la forme compact à la forme réelle.
Calculs matricielles par pointeur.Dans beaucoup de calculs une matrice est un grand tableau quasiment vide .Au lieu de memoriser la totalité du tableau,il convient alors
de ne remplir que les cases non nulles.On peut alors les mémoriser sous la forme d'un triplet:<coordonnées,valeur>.Mettre en place une telle structure
puis les opérations élémentaires entre deux matrices.