begin process at 2012 05 29 21:02:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

Problème de chainage dans un tableau dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de chainage dans un tableau dynamique

lundi 1 février 2010 à 21:02:19 | Problème de chainage dans un tableau dynamique

hachure1

Voila ce bout de code qui extrait les données d'un graphe dans un fichier et stoke cela dans un tableau dynamique contenant de sommets ou chaque case contient le nom du sommet et un champ liste chainnée des successeurs du sommet.
Ce code compile et lors de la verification affiche les noms de sommet mais pasla liste correspondante.
Que quequ'un m'aide a identifier le bug.
Voila le code et le fichier test.txt :
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/stat.h>

typedef struct sommet{ //Structure d'un sommet
char *nom;
struct arc *succ;
}Sommet;

typedef Sommet *Noeud;

typedef struct arc{ //Structure d'un arc
char *srce;
struct arc *dest;
int distance;
int temps;
}Arc;

typedef struct graphe{ //Structure du graphe
int taille;
Sommet *ptr;
}Graphe;

int i,j,taille;
char *temp; char ligne[120];
Arc *cell; Sommet *ptr; Sommet liste;


/*Cette fonction extrait les données du graphe à parti de la chaine de caractère
en paramètre creer un sommet et le stoke dans un indice du tableau*/

void Make_tab(char ligne[120]){
liste.nom = (char *)malloc(sizeof(char)*(strlen(strtok_r(ligne,":",&temp)+1)));
*liste.nom = *strtok_r(ligne,":",&temp); //nom du sommet
liste.nom[strlen(liste.nom)+1] = '\0';
liste.succ = NULL;
char * predecesseur = strtok_r(NULL,":",&temp); //nom du predecesseur
char *temp1 = strtok_r(NULL,",",&temp);

while(temp1){ //creation de la liste chainée des successeurs du sommet
cell = (Arc *)malloc(sizeof(Arc));
cell->srce = &temp1[strlen(cell->srce)];
cell->srce[strlen(cell->srce)+1] = '\0';
cell->distance = atoi(strtok_r(NULL,",",&temp));
cell->temps = atoi(strtok_r(NULL,",",&temp));
cell->dest = liste.succ;
liste.succ = cell;
temp1 = strtok_r(NULL,",",&temp);
}
ptr[i] = liste; //stokage su sommet dans l'indice i du tableau
}


/*Cette fonction lit les lignes du fichier et le transmet a Make_tab pour un chargement global du graphe*/

void Load(){
FILE *fichier = fopen("test.txt","r");
fgets(ligne,sizeof(char)*120,fichier);
taille = atoi(ligne);
ptr = (Sommet *)malloc(sizeof(Sommet)*taille); //creation du tableau dynamique
printf("Taille du tableau %d\n",taille);

for (i=0;i<taille;i++){ //transmission de la ligne a Make_tab
fgets(ligne,sizeof(char)*120,fichier);
Make_tab(ligne);
}
}

/*Cette affiche les elements contenus dans le tableu*/

void print_tab(Sommet *ptr){
for (i=0;i<taille;i++){
printf("%s %s\n",ptr[i].nom,&ptr[i].succ->srce);
}
}


int main(){
Load();
print_tab(ptr);
return 0;
}


fichier txt

10
A:Z:(B,2,1),(,2,3)
B:A:(D,1,1)
C:A:(E,8,4)
D:B:(F,10,1)
E:C:(F,9,2)
F:D:E:(G,11,1)
G:F:(I,6,1),(K,13,6),(J,14,6)
I:G:(K,5,1)
J:G:(K,4,3)
K:G:I:J

lundi 18 avril 2011 à 23:53:51 | Re : Problème de chainage dans un tableau dynamique

delictum




code source :

soit G(X,T) un graphe d'ordre n
on demande de rédiger des fonctions et procédures suivants de manipulation et de création dans les cas suivants :

1) Graphe représenté physiquement par matrice d'incidence
2) Graphe représenté physiquement par chainage dynamique
3) Graphe représenté physiquement par chainage tabulé


on demande de rédiger dans chaque cas des procédures de :
-création du Graphe et affichage du DDS et du DDP
-tester si un Graphe (x,y) est un arc du Graphe
-tester si une suite donnée x1,x2,....,xn est un chemin du graphe
-tester si un chemin est Hamiltonien, Eulérien
-tester si un Graphe est fortement connexe
-tester si un Graphe est un GSC (graphe son circuit)
-déterminer tous les circuits de langeur donnée
-ordonner le graphe par niveaux
-tester si un graphe contient des circuits

Langage C++


Cette discussion est classée dans : liste, char, arc, cell, sommet


Répondre à ce message

Sujets en rapport avec ce message

FindResource [ par deck_bsd ] Yop à tous,Voila j'ai un big problème. En fait je crée une liste des resource d'un exe dans mon application. Et lorsque je clique sur une d'entre elle [c] erreur malloc (incompatible types in assignment) [ par Diony ] voici mon programme : #include #include #include typedef struct recette { char * nom; struct ingredient * ing; [c] pour les motivés ,structurer un fichier [ par Diony ] bonjour , voici mon programme . je n arrive pas a structurer mon fichier a cause de la fonction inserer_recette_fin_liste qui doit normalement inserer sprintf, combien de mémoire à alloué ??? [ par Polack77 ] Bonjour, J'ai un [size=50]petit[/size] problème dans une fonction toute bête (et sa commence à me courir sérieusement). Je veut construire une fonct liste de liste en C++ pour manipuler des graphe [ par sbeclo007 ] bonjour, je suis un debutant en c++,et j'espere que vous m'aider à bien savoir comment implemantté un progm de Prim. la premiere des chose qui me gen Liste de liste pour :graphe et algo de Prim [ par sbeclo007 ] // Liste de sommet class Liste_Sommet :public Liste,public Sommet { public: Liste_Sommet (){} void affiche(); Sommet& Sommet_courant(); void Sommet_pr Violation d'accès lors de la lecture de l'emplacement 0x00000000. [ par d0jones ] bonjour, j'ai un petit souci, quand j'essai d'accéder à la donnée de ma struct j'ai le message suivant : Exception non gérée à 0x01202029 dans ListTe Trie liste de saisit sans passer par une insertion [ par Nexouille ] Voila je dois a partir d'un fichier prendre toute les ip qui s'y trouve dont on ne connait pas le nombre et je dois compter combien de fois elles appa recherche dans une liste chainée [ par sossouha ] salut, J'ai à faire le recherche d'un caractère dans une liste chainée en langage C. voici la structure que j'utilise typedef struct arc { char va


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,228 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales