#include #include #include "Matrice.h" struct Case{ int RangCol; /* numero de la colonne ou est la case */ int NumLigne; /* numero de la ligne ou est la case */ struct Case *CaseSuivante; /* pointeur sur la case NON VIDE suivante, NULL si derniere ou seule case de la ligne */ void *Contenu; /* champ ou sera rentree la formule */ }; struct Ligne{ int NbrCases; /* nbr de cases constituant au moment le chainage */ int NumLigne; /* numero de la ligne */ struct Ligne *LigneSuivante; /* pointeur sur la ligne suivante, NULL si pas d autres lignes */ Case PemiereCase; /* pointeur sur la premiere case NON VIDE de la ligne */ }; struct Matrice{ int NbrLignesMax; /* nbr de lignes maximum que poura contenir le tableau */ int NbrColMax; /* nbr de colonnes maximum... */ Ligne PremiereLigne; /* Pointeur sur la premiereligne du tableau */ int NbrLignesEnCours; /* utile ??? nbr de ligne en cours dans le tableau */ }; /************************* CaseAllouer ************************************* * # renvoi l'adresse de la case que l on vient de creer, NULL si probleme * # rang: correspond au rang de la case au sein de la ligne= numero de colonne * # formule: contenu de la case, de type void * # Utilisation d une case temporaire tmp pour allouer la bonne quantite d espace memoire, probleme du au contenu generique -> on ne connait pas la taille d une formule... */ Case CaseAllouer(int lig,int col, void *formule) { Case c,tmp; tmp->Contenu=formule; tmp->RangCol=col; tmp->NumLigne=lig; tmp->CaseSuivante=NULL; if ((c=malloc(sizeof(tmp)))==NULL) { fprintf(stderr,"Erreur de la creation de case\n"); return NULL; } else { *c=*tmp; return c; } }