Bonjour,

Dans le cadre d'un projet de programmation en langage C, je dois définir le type de donnée abstrait "Matrix" pour pouvoir manipuler des matrices chainées. Voici le schéma d'une matrice 2*2 :



Voici ma déclaration du type :

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
typedef struct cellElem
{
int row;
int col;
float value;
struct cellElem* nextCol;
struct cellElem* nextRow;
}cellElement;
 
typedef struct colElem
{
int colN;
struct colElem* nextCol;
struct colElem* prevCol;
cellElement* col;
}colElement;
 
typedef struct rowElem
{
int rowN;
struct rowElem* nextRow;
struct rowElem* prevRow;
cellElement* row;
}rowElement;
 
typedef struct 
{
        int col;
        int row;
        colElement* cols;
        rowElement* rows;
        }matrix;
 
typedef matrix* Matrix;
Le problème c'est que je n'arrive même pas à accéder à la valeur d'une case de la matrice ("value" dans la structure "cellElement").

Si par exemple je fais ça...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
int main(int argc, char* argv[]) 
{
     Matrix M;
     M=(Matrix)malloc(sizeof(matrix));
     M->cols->col->value=5.;
     printf("%f", M->cols->col->value);
     system("PAUSE");
 
}
...le programme compile mais plante à l'exécution. Je dois donc avoir une erreur dans la déclaration du type ou dans le main. Je précise que je suis débutant.

Merci d'avance.