probleme sur les listes chainees
Bonjour,je vous explique mon problème.J'ai un fichier texte que voici :
Code:
1 2 3 4 5 6
| \ \ \ 5\ 18\ \ \
\ \ 11\6 . . \ \
\ \13 . . . \ \
\7 . . \4 . . \
\ \15 . . . \ \
\ \ \ \ \ \ \ |
Mon but est de faire un tableau de listes qui a la taille du nombre de variables qui sont ici représentés par les points.
J'ai déjà un programme qui calcule le nombre de variables.
Maintenant,je dois donc lire le fichier, je dois donner des valeurs(indices) à mes variables(points).
Et lorsque 2 variables(points)se succèdent comme dans la deuxieme ligne par exemple,je dois chainer la premiere variable(premier point) à la deuxieme et inversement la deuxieme(deuxieme point) a la premiere.
Je schématise pour la premiere ligne :
0->1
1->0
Pour la deuxieme ligne j'aurais:
0->1 //le premier point trouvé(indice 0) dans le fichier est lié au 2eme point(indice 1)
1->0 //l'inverse
//deuxieme ligne
2->3->4 // le 3eme point(indice 2) est lié au 4eme et 5eme point trouvé
3->2->4
4->2->3
.........
.........
.........
nieme point
Les variables(points) sur une meme ligne qui se succèdent
ex: . . .
sont dans une liste.
Voici ce que j'ai fait :
Code:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #include <stdio.h>
#include <stdlib.h>
void construction_graphe_contraintes(int nombre_variables);
typedef struct maillon maillon;
struct maillon
{
maillon *suivant;
int indice_maillon;
};
typedef maillon*liste;
liste tableau_contraintes[nombre_variables];
int main(void)
{
FILE*grille=fopen("grille.txt","r");
if(grille==NULL)
{
perror("Erreur lors de l'ouverture de la grille");
return EXIT_FAILURE;
}
while(!feof(grille)
{
lecture_ligne(nombre_variables);
}
}
//Contraintes sur les lignes
lecture_ligne(int nombre_variables)
{
char caractere;
int indice_tableau=0;
int indice_m=0;
char tmp;
int reste_variable=nombre_variables;
tmp=fgetc(grille);
while(tmp!="\n")
{
if(tmp==".")
{
maillon* tableau_contraintes[nombre_variables]=(maillon*)malloc(sizeof(struct maillon));
maillon*maillon=(maillon*)malloc(sizeof(struct maillon));
maillon->indice_maillon=indice_m;
indice_m++;
maillon->suivant=NULL;
tmp=fgetc(grille);
while(tmp==".")
{
maillon * pointeur=(maillon*)malloc(sizeof(struct maillon)):
pointeur=tableau_contraintes[indice_tableau];
maillon* nouveau_maillon=(maillon*)malloc(sizeof(struct maillon));
nouveau_maillon->indice_maillon=indice_m;
indice_m++;
nouveau_maillon->suivant=NULL;
pointeur->suivant=nouveau_maillon;
indice_tableau++;
pointeur->suivant=maillon;
pointeur=nouveau_maillon;
}
}
} |
Mon probleme est que je n'arrive pas a généraliser mon code pour n variables et je n'ai pas très bien compris le procéder pour chainer 0 à 1 et en meme temps 1 à 0. C'est un problème d'algo.Merci de m'aider!