no save
Assistance
Achat
News

Forum | programmation
Probleme de liste chainée en C
mamiemando, le jeu. 20 oct. 2005 à 21:04:11
Quand tu poste du code, mets le entre des balises de mise en forme "code" histoire que ce soit lisible ;-)

Je te propose un code mais je ne peux pas le compiler et te dire s'il marche... Mais à mon avis on n'est pas loin du vrai ;-)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct voisinage {
int ordre;
int *v;
struct voisinage *suiv;
}voisinage;

voisinage *new_voisinage(){
voisinage *vois=(voisinage *)calloc(1,sizeof(voisinage));
return vois;
}

void del_voisinage(voisinage *vois){
free(vois.v);
free(vois);
}

void del_chaine(voisinage *debut){
voisinage *vois=debut;
voisinage *vois_suivant;
while(vois){
vois_suivant=vois->suivant;
del_voisinage(vois);
vois=vois_suivant;
}
}

//-------------------------------------------------

int *lire_ligne(char *str){
//1er passage : déterminer le nombre d'entiers :
unsigned int nb_elts,i;
int plop;
int *tab;
for(nb_elts=0;sscanf(buffer," %d ",&plop)==1;++nb_elts);
printf("La ligne [%s] contient %d element(s)\n",buffer,nb_ets);

//2e passage : remplir le tableau
tab=(int *)malloc(nb_elts*sizeof(int));
for(i=0;i<nb_elts;++i){
sscanf(buffer," %d ",&tab[i]);
}
return tab;
}

int lire_fichier(fp){
unsigned int ordre_lu;
voisinage *vois_suivant;
voisinage *vois_courant;
char buffer[255];

//1ere ligne
fscanf("%d\n",&ordre_lu);
vois_courant=new_voisinage(ordre_lu);

//Lignes suivantes
while(!feof(fp)){
fscanf("%s\n",&buffer);
printf("Lit %s\n",buffer);
vois_courant->v=lire_ligne(buffer);
vois_suivant=new_voisinage(vois_courant->ordre+1);
vois_courant->suivant=vois_suivant;
vois_courant=vois_suivant;
}
return 0;
}

int main(int argc, char **argv){
FILE *fp;
voisinage *vois;
if (argc!=1){
fprintf(stderr,"usage : %s filename\n",argv[0]);
return 1;
}
if( (fp=fopen(argv[1])==NULL){
fprintf(stderr,"Fichier %s invalide\n",argv[1]);
return 1;
}
vois=lire_fichier(fp);
del_chaine(vois);
return 0;
}

Bonne chance
PrécédentBastien
oct. 05
crabs
oct. 05
Suivant
REPONSES
mamiemando
oct. 05
crabs
oct. 05
crabs
oct. 05
mamiemando
oct. 05
Version Web
Réalisé par RedShift
no save