[lge C] Liste chainée
Kelly
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans le cadre d'un projet je voudrais créer une ligne de métro sous forme d'une structure de données "struct Ligne1" dans laquelle j'aurais une liste de station:
"char* ligne1 [4]={"ladefense","esplanadedeladefense","pontdeneuilly","lessablons"};
Je voudrais aussi que dans cette structure il ait un pointeur qui pointe vers la station précédente et un autre qui pointe vers la station suivante de la liste char* ligne1.
je ne vois pas du tout comment faire une telle chose, ni meme si ma méthode est bonne. Pouvez vous me conseillez s'il vous plait?
Amicalement,
Kelly programmeuse désespérée.
Dans le cadre d'un projet je voudrais créer une ligne de métro sous forme d'une structure de données "struct Ligne1" dans laquelle j'aurais une liste de station:
"char* ligne1 [4]={"ladefense","esplanadedeladefense","pontdeneuilly","lessablons"};
Je voudrais aussi que dans cette structure il ait un pointeur qui pointe vers la station précédente et un autre qui pointe vers la station suivante de la liste char* ligne1.
je ne vois pas du tout comment faire une telle chose, ni meme si ma méthode est bonne. Pouvez vous me conseillez s'il vous plait?
Amicalement,
Kelly programmeuse désespérée.
A voir également:
- [lge C] Liste chainée
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Site dangereux liste - Guide
- Voir liste d'amis facebook - Guide
57 réponses
Re,
J'a compris pourquoi.
Pas de panique ;-))
Mype a raison.
En fait j'avais installé Dev C++ et code blocks a trouvé un compilateur, ce qui n'est pas ton cas puisque
codeblocks-8.02-setup.exe n'a pas un compilateur
Donc il faut télécharger codeblocks-8.02mingw-setup.exe
NOTE: The codeblocks-8.02mingw-setup.exe file includes the GCC compiler and GDB debugger from MinGW.
J'a compris pourquoi.
Pas de panique ;-))
Mype a raison.
En fait j'avais installé Dev C++ et code blocks a trouvé un compilateur, ce qui n'est pas ton cas puisque
codeblocks-8.02-setup.exe n'a pas un compilateur
Donc il faut télécharger codeblocks-8.02mingw-setup.exe
NOTE: The codeblocks-8.02mingw-setup.exe file includes the GCC compiler and GDB debugger from MinGW.
C'est pas possible! je vais revenir a visual c'est le seul qui semble bine vouloir fonctionner décemment!
Je vais chercher pourquoi il me renvoie 2 erreurs alors que chez toi ca fonctionne bien sur le meme code
Je vais chercher pourquoi il me renvoie 2 erreurs alors que chez toi ca fonctionne bien sur le meme code
Re,
T'avais ça avec visual
32) : error C2275: 'LigneMetro' : utilisation non conforme de ce type comme expression
32) : error C2065: 'metro' : identificateur non déclaré
Peut être qu'il faut changer la définition de structures.
Essaie ce code sur Visual.
Sinon essaie avec Dev C++ http://www.commentcamarche.net/telecharger/telecharger 59 dev c
En fait tu peux faire comme moi.
Tu installes Dev C++ et ensuite code::blocks et tu peux tester sur les deux
T'avais ça avec visual
32) : error C2275: 'LigneMetro' : utilisation non conforme de ce type comme expression
32) : error C2065: 'metro' : identificateur non déclaré
Peut être qu'il faut changer la définition de structures.
Essaie ce code sur Visual.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Station{
char *donnee;
struct Station *precedent;
struct Station *suivant;
};
struct LigneMetro{
struct Station *debut;
struct Station *fin;
int taille;
};
void initialisation (struct LigneMetro * metro);
struct Station *alloc (struct Station * nouveau_element);
int insertion_dans_metro_vide (struct LigneMetro * metro, char *donnee);
int ins_fin_metro (struct LigneMetro * metro, char *donnee);
void affiche(struct LigneMetro *metro);
int main()
{
char* ligne1 [25]={"ladefense","esplanadedeladefense",
"pontdeneuilly","lessablons",
"portemaillot","argentine",
"charlesdegaulleetoile"};
int i;
char *donnee;
donnee = malloc(50);
struct LigneMetro *metro;
metro = (struct LigneMetro *) malloc (sizeof(struct LigneMetro));
initialisation(metro);
insertion_dans_metro_vide(metro,ligne1[0]);
for(i=1;i<7;++i)
ins_fin_metro(metro,ligne1[i]);
affiche(metro);
return 0;
}
/* les fonctions */
void initialisation (struct LigneMetro * metro){
metro->debut = NULL;
metro->fin = NULL;
metro->taille = 0;
}
struct Station *alloc (struct Station * nouveau_element){
if ((nouveau_element = (struct Station *) malloc (sizeof (struct Station))) == NULL)
return NULL;
if ((nouveau_element->donnee = (char *) malloc (50 * sizeof (char))) == NULL)
return NULL;
return nouveau_element;
}
int insertion_dans_metro_vide (struct LigneMetro * metro, char *donnee){
struct Station *nouveau_element;
if ((nouveau_element = alloc (nouveau_element)) == NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->precedent = NULL;
nouveau_element->suivant = NULL;
metro->debut = nouveau_element;
metro->fin = nouveau_element;
metro->taille++;
return 0;
}
int ins_fin_metro (struct LigneMetro * metro, char *donnee){
struct Station *nouveau_element;
if ((nouveau_element = alloc (nouveau_element)) == NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->suivant = NULL;
nouveau_element->precedent = metro->fin;
metro->fin->suivant = nouveau_element;
metro->fin = nouveau_element;
metro->taille++;
return 0;
}
void affiche(struct LigneMetro *metro){
struct Station *courant;
courant = metro->debut;
printf("[ ");
while(courant != NULL){
printf("%s ",courant->donnee);
courant = courant->suivant;
}
printf("]\n");
}
Sinon essaie avec Dev C++ http://www.commentcamarche.net/telecharger/telecharger 59 dev c
En fait tu peux faire comme moi.
Tu installes Dev C++ et ensuite code::blocks et tu peux tester sur les deux
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai créé toutes mes lignes de métro! Ca fonctionne très bien mais quelque chose m'échappe: le code crée la premiere station (là tout va bien) mais après il met toutes les autres stations dans la suite de la ligne sans boucle, comment est ce possible?
la voilà:
int main()
{
char* ligne1 [25]={"ladefense","esplanadedeladefense","pontdeneuilly","lessablons","portemaillot","argentine","charlesdegaulleetoile","georgev","franklindroosevelt","champselyseesclemenceau","concorde","tuileries","palaisroyalmuséedulouvre","louvrerivoli","châtelet","hôteldeville","saintpaul","bastille","garedelyon","reuillydiderot","nation","portedevincennes","saintmande","berault","chateaudevincennes"};
char* ligne2 [25]={"portedauphine","victorhugo","charlesdegaulleetoile","ternes","courcelles","monceau","villiers","rome","placedeclichy","blanche","pigalle","anvers","barbèsrochechouart","lachapelle","stalingrad","jaures","colonelfabien","belleville","couronnes","menilmontant","perelachaise","philippeauguste","alexandredumas","avron","nation"};
char* ligne5 [22]={"bobignypablopicasso","bobignypantinraymondqueneau","eglisedepantin","hoche","portedepantin","ourcq","laumière","jaures","stalingrad","garedunord","garedelest","jacquesbonsergent","republique","oberkampf","richardlenoir","breguetsabin","bastille","quaidelarapee","garedausterlitz","saintmarcel","campoformio","placeditalie"};
char* ligne11 [13]={"chatelet","hoteldeville","rambuteau","artsetmetiers","republique","goncourt","belleville","pyrenees","jourdain","placesdefetes","telegraphe","portedeslilas","mairiedeslilas"};
char* ligne9 [37]={"pontdesevres","billancourt","marcelsembat","portedesaintcloud","exelmans","michelangemolitor","michelangeauteuil","jasmin","ranelagh","lamuette","ruedelapompe","trocadero","iena","almamarceau","franklindroossevelt","saintphilipeduroule","miromesnil","saintaugustin","havrecaumartin","chausseedantinlafayette","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","république","oberkampf","saintambroise","voltaire","charonne","ruedesboulets","nation","buzenval","maraichers","portedemontreuil","robespierre","croixdechavaux","mairiedemontreuil"};
char* ligne8 [37]={"balard","lourmel","boucicaut","felixfaure","commerce","lamottepicquetgrenelle","ecolemilitaire","latourmaubourg","invalides","concorde","madeleine","opera","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","republique","fillesducalvaire","saintsebastienfroissart","cheminvert","bastille","ledrurollin","faidherbechlaigny","reuillydiderot","montgallet","daumesnil","michelbizot","portedoree","portedecharanton","liberte","charantonecoles","ecoleveterinaire","maisonalfortstade","maisonalfortlesjuilliottes","creteillechat","creteiluniversite","creteilprefecture"};
int i;
char *donnee;
donnee = malloc(70);
struct LigneMetro *metro;
metro = (struct LigneMetro *) malloc (sizeof(struct LigneMetro));
initialisation(metro);
insertion_dans_metro_vide(metro,ligne1[0]);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne1[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne2[0]);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne2[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne5[0]);
for(i=1;i<22;++i)
ins_fin_metro(metro,ligne5[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne8[0]);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne8[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne9[0]);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne9[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne11[0]);
for(i=1;i<13;++i)
ins_fin_metro(metro,ligne11[i]);
affiche(metro);
system("PAUSE");
return 0;
}
int main()
{
char* ligne1 [25]={"ladefense","esplanadedeladefense","pontdeneuilly","lessablons","portemaillot","argentine","charlesdegaulleetoile","georgev","franklindroosevelt","champselyseesclemenceau","concorde","tuileries","palaisroyalmuséedulouvre","louvrerivoli","châtelet","hôteldeville","saintpaul","bastille","garedelyon","reuillydiderot","nation","portedevincennes","saintmande","berault","chateaudevincennes"};
char* ligne2 [25]={"portedauphine","victorhugo","charlesdegaulleetoile","ternes","courcelles","monceau","villiers","rome","placedeclichy","blanche","pigalle","anvers","barbèsrochechouart","lachapelle","stalingrad","jaures","colonelfabien","belleville","couronnes","menilmontant","perelachaise","philippeauguste","alexandredumas","avron","nation"};
char* ligne5 [22]={"bobignypablopicasso","bobignypantinraymondqueneau","eglisedepantin","hoche","portedepantin","ourcq","laumière","jaures","stalingrad","garedunord","garedelest","jacquesbonsergent","republique","oberkampf","richardlenoir","breguetsabin","bastille","quaidelarapee","garedausterlitz","saintmarcel","campoformio","placeditalie"};
char* ligne11 [13]={"chatelet","hoteldeville","rambuteau","artsetmetiers","republique","goncourt","belleville","pyrenees","jourdain","placesdefetes","telegraphe","portedeslilas","mairiedeslilas"};
char* ligne9 [37]={"pontdesevres","billancourt","marcelsembat","portedesaintcloud","exelmans","michelangemolitor","michelangeauteuil","jasmin","ranelagh","lamuette","ruedelapompe","trocadero","iena","almamarceau","franklindroossevelt","saintphilipeduroule","miromesnil","saintaugustin","havrecaumartin","chausseedantinlafayette","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","république","oberkampf","saintambroise","voltaire","charonne","ruedesboulets","nation","buzenval","maraichers","portedemontreuil","robespierre","croixdechavaux","mairiedemontreuil"};
char* ligne8 [37]={"balard","lourmel","boucicaut","felixfaure","commerce","lamottepicquetgrenelle","ecolemilitaire","latourmaubourg","invalides","concorde","madeleine","opera","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","republique","fillesducalvaire","saintsebastienfroissart","cheminvert","bastille","ledrurollin","faidherbechlaigny","reuillydiderot","montgallet","daumesnil","michelbizot","portedoree","portedecharanton","liberte","charantonecoles","ecoleveterinaire","maisonalfortstade","maisonalfortlesjuilliottes","creteillechat","creteiluniversite","creteilprefecture"};
int i;
char *donnee;
donnee = malloc(70);
struct LigneMetro *metro;
metro = (struct LigneMetro *) malloc (sizeof(struct LigneMetro));
initialisation(metro);
insertion_dans_metro_vide(metro,ligne1[0]);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne1[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne2[0]);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne2[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne5[0]);
for(i=1;i<22;++i)
ins_fin_metro(metro,ligne5[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne8[0]);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne8[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne9[0]);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne9[i]);
affiche(metro);
insertion_dans_metro_vide(metro,ligne11[0]);
for(i=1;i<13;++i)
ins_fin_metro(metro,ligne11[i]);
affiche(metro);
system("PAUSE");
return 0;
}
C'est bon j'ai compris, ce sont les boucles for qu'il y a dans le main qui créent la ligne! suis-je bête!
Voilà le code tel qu'il est maintenant, le programme fonctionne très bien.
Maintenant je voudrais créer des inter-connections entre les lignes quand elles ont une station en commum, pour créer les correspondances. Mais ça me pose un gros problème puisque chaque station ne possède que deux pointeurs, l'un vers la station précédente de la meme ligne l'autre vers la station suivante de la meme ligne. Si je veut créer les correspondances ça voudrait dire qu'il faut que je rajoute 4 autres pointeurs vers précédent et suivant aux stations qui sont en commun a plusieurs a ligne. Je ne vois pas du tout comment faire tout ça? avez vous une idée?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Station{
char *donnee;
struct Station *precedent;
struct Station *suivant;
int num;
int poids;
};
struct LigneMetro{
struct Station *debut;
struct Station *fin;
int taille;
};
void initialisation (struct LigneMetro * metro);
struct Station *alloc (struct Station * nouveau_element);
int insertion_dans_metro_vide (struct LigneMetro * metro, char *donnee, int numligne);
int ins_fin_metro (struct LigneMetro * metro, char *donnee, int numligne);
void affiche(struct LigneMetro *metro);
int main()
{
char* ligne1 [25]={"ladefense","esplanadedeladefense","pontdeneuilly","lessablons","portemaillot","argentine","charlesdegaulleetoile","georgev","franklindroosevelt","champselyseesclemenceau","concorde","tuileries","palaisroyalmuséedulouvre","louvrerivoli","chatelet","hôteldeville","saintpaul","bastille","garedelyon","reuillydiderot","nation","portedevincennes","saintmande","berault","chateaudevincennes"};
char* ligne2 [25]={"portedauphine","victorhugo","charlesdegaulleetoile","ternes","courcelles","monceau","villiers","rome","placedeclichy","blanche","pigalle","anvers","barbèsrochechouart","lachapelle","stalingrad","jaures","colonelfabien","belleville","couronnes","menilmontant","perelachaise","philippeauguste","alexandredumas","avron","nation"};
char* ligne5 [22]={"bobignypablopicasso","bobignypantinraymondqueneau","eglisedepantin","hoche","portedepantin","ourcq","laumière","jaures","stalingrad","garedunord","garedelest","jacquesbonsergent","republique","oberkampf","richardlenoir","breguetsabin","bastille","quaidelarapee","garedausterlitz","saintmarcel","campoformio","placeditalie"};
char* ligne11[13]={"chatelet","hoteldeville","rambuteau","artsetmetiers","republique","goncourt","belleville","pyrenees","jourdain","placesdefetes","telegraphe","portedeslilas","mairiedeslilas"};
char* ligne9 [37]={"pontdesevres","billancourt","marcelsembat","portedesaintcloud","exelmans","michelangemolitor","michelangeauteuil","jasmin","ranelagh","lamuette","ruedelapompe","trocadero","iena","almamarceau","franklindroossevelt","saintphilipeduroule","miromesnil","saintaugustin","havrecaumartin","chausseedantinlafayette","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","république","oberkampf","saintambroise","voltaire","charonne","ruedesboulets","nation","buzenval","maraichers","portedemontreuil","robespierre","croixdechavaux","mairiedemontreuil"};
char* ligne8 [37]={"balard","lourmel","boucicaut","felixfaure","commerce","lamottepicquetgrenelle","ecolemilitaire","latourmaubourg","invalides","concorde","madeleine","opera","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","republique","fillesducalvaire","saintsebastienfroissart","cheminvert","bastille","ledrurollin","faidherbechlaigny","reuillydiderot","montgallet","daumesnil","michelbizot","portedoree","portedecharanton","liberte","charantonecoles","ecoleveterinaire","maisonalfortstade","maisonalfortlesjuilliottes","creteillechat","creteiluniversite","creteilprefecture"};
int i;
char *donnee;
donnee = malloc(70);
struct LigneMetro *metro;
metro = (struct LigneMetro *) malloc (sizeof(struct LigneMetro));
initialisation(metro);
insertion_dans_metro_vide(metro,ligne1[0],1);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne1[i],1);
affiche(metro);
insertion_dans_metro_vide(metro,ligne2[0],2);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne2[i],2);
affiche(metro);
insertion_dans_metro_vide(metro,ligne5[0],5);
for(i=1;i<22;++i)
ins_fin_metro(metro,ligne5[i],5);
affiche(metro);
insertion_dans_metro_vide(metro,ligne8[0],8);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne8[i],8);
affiche(metro);
insertion_dans_metro_vide(metro,ligne9[0],9);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne9[i],9);
affiche(metro);
insertion_dans_metro_vide(metro,ligne11[0],11);
for(i=1;i<13;++i)
ins_fin_metro(metro,ligne11[i],9);
affiche(metro);
system("PAUSE");
return 0;
}
/* les fonctions */
void initialisation (struct LigneMetro * metro){
metro->debut = NULL;
metro->fin = NULL;
metro->taille = 0;
}
struct Station *alloc (struct Station * nouveau_element){
if ((nouveau_element = (struct Station *) malloc (sizeof (struct Station))) == NULL)
return NULL;
if ((nouveau_element->donnee = (char *) malloc (70 * sizeof (char))) == NULL)
return NULL;
return nouveau_element;
}
int insertion_dans_metro_vide (struct LigneMetro * metro, char *donnee,int numligne){
struct Station *nouveau_element;
if ((nouveau_element = alloc (nouveau_element)) == NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->num=numligne;
nouveau_element->precedent = NULL;
nouveau_element->suivant = NULL;
metro->debut = nouveau_element;
metro->fin = nouveau_element;
metro->taille++;
return 0;
}
int ins_fin_metro (struct LigneMetro * metro, char *donnee,int numligne){
struct Station *nouveau_element;
if ((nouveau_element = alloc (nouveau_element)) == NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->num=numligne;
nouveau_element->suivant = NULL;
nouveau_element->precedent = metro->fin;
metro->fin->suivant = nouveau_element;
metro->fin = nouveau_element;
metro->taille++;
return 0;
}
void affiche(struct LigneMetro *metro){
struct Station *courant;
courant = metro->debut;
printf("ligne %d: [ ",courant->num);
while(courant != NULL){
printf("%s, ",courant->donnee);
courant = courant->suivant;
}
printf("]\n\n\n");
}
Maintenant je voudrais créer des inter-connections entre les lignes quand elles ont une station en commum, pour créer les correspondances. Mais ça me pose un gros problème puisque chaque station ne possède que deux pointeurs, l'un vers la station précédente de la meme ligne l'autre vers la station suivante de la meme ligne. Si je veut créer les correspondances ça voudrait dire qu'il faut que je rajoute 4 autres pointeurs vers précédent et suivant aux stations qui sont en commun a plusieurs a ligne. Je ne vois pas du tout comment faire tout ça? avez vous une idée?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Station{
char *donnee;
struct Station *precedent;
struct Station *suivant;
int num;
int poids;
};
struct LigneMetro{
struct Station *debut;
struct Station *fin;
int taille;
};
void initialisation (struct LigneMetro * metro);
struct Station *alloc (struct Station * nouveau_element);
int insertion_dans_metro_vide (struct LigneMetro * metro, char *donnee, int numligne);
int ins_fin_metro (struct LigneMetro * metro, char *donnee, int numligne);
void affiche(struct LigneMetro *metro);
int main()
{
char* ligne1 [25]={"ladefense","esplanadedeladefense","pontdeneuilly","lessablons","portemaillot","argentine","charlesdegaulleetoile","georgev","franklindroosevelt","champselyseesclemenceau","concorde","tuileries","palaisroyalmuséedulouvre","louvrerivoli","chatelet","hôteldeville","saintpaul","bastille","garedelyon","reuillydiderot","nation","portedevincennes","saintmande","berault","chateaudevincennes"};
char* ligne2 [25]={"portedauphine","victorhugo","charlesdegaulleetoile","ternes","courcelles","monceau","villiers","rome","placedeclichy","blanche","pigalle","anvers","barbèsrochechouart","lachapelle","stalingrad","jaures","colonelfabien","belleville","couronnes","menilmontant","perelachaise","philippeauguste","alexandredumas","avron","nation"};
char* ligne5 [22]={"bobignypablopicasso","bobignypantinraymondqueneau","eglisedepantin","hoche","portedepantin","ourcq","laumière","jaures","stalingrad","garedunord","garedelest","jacquesbonsergent","republique","oberkampf","richardlenoir","breguetsabin","bastille","quaidelarapee","garedausterlitz","saintmarcel","campoformio","placeditalie"};
char* ligne11[13]={"chatelet","hoteldeville","rambuteau","artsetmetiers","republique","goncourt","belleville","pyrenees","jourdain","placesdefetes","telegraphe","portedeslilas","mairiedeslilas"};
char* ligne9 [37]={"pontdesevres","billancourt","marcelsembat","portedesaintcloud","exelmans","michelangemolitor","michelangeauteuil","jasmin","ranelagh","lamuette","ruedelapompe","trocadero","iena","almamarceau","franklindroossevelt","saintphilipeduroule","miromesnil","saintaugustin","havrecaumartin","chausseedantinlafayette","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","république","oberkampf","saintambroise","voltaire","charonne","ruedesboulets","nation","buzenval","maraichers","portedemontreuil","robespierre","croixdechavaux","mairiedemontreuil"};
char* ligne8 [37]={"balard","lourmel","boucicaut","felixfaure","commerce","lamottepicquetgrenelle","ecolemilitaire","latourmaubourg","invalides","concorde","madeleine","opera","richelieudrouot","grandsboulevards","bonnenouvelle","strasbourgsaintdenis","republique","fillesducalvaire","saintsebastienfroissart","cheminvert","bastille","ledrurollin","faidherbechlaigny","reuillydiderot","montgallet","daumesnil","michelbizot","portedoree","portedecharanton","liberte","charantonecoles","ecoleveterinaire","maisonalfortstade","maisonalfortlesjuilliottes","creteillechat","creteiluniversite","creteilprefecture"};
int i;
char *donnee;
donnee = malloc(70);
struct LigneMetro *metro;
metro = (struct LigneMetro *) malloc (sizeof(struct LigneMetro));
initialisation(metro);
insertion_dans_metro_vide(metro,ligne1[0],1);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne1[i],1);
affiche(metro);
insertion_dans_metro_vide(metro,ligne2[0],2);
for(i=1;i<25;++i)
ins_fin_metro(metro,ligne2[i],2);
affiche(metro);
insertion_dans_metro_vide(metro,ligne5[0],5);
for(i=1;i<22;++i)
ins_fin_metro(metro,ligne5[i],5);
affiche(metro);
insertion_dans_metro_vide(metro,ligne8[0],8);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne8[i],8);
affiche(metro);
insertion_dans_metro_vide(metro,ligne9[0],9);
for(i=1;i<37;++i)
ins_fin_metro(metro,ligne9[i],9);
affiche(metro);
insertion_dans_metro_vide(metro,ligne11[0],11);
for(i=1;i<13;++i)
ins_fin_metro(metro,ligne11[i],9);
affiche(metro);
system("PAUSE");
return 0;
}
/* les fonctions */
void initialisation (struct LigneMetro * metro){
metro->debut = NULL;
metro->fin = NULL;
metro->taille = 0;
}
struct Station *alloc (struct Station * nouveau_element){
if ((nouveau_element = (struct Station *) malloc (sizeof (struct Station))) == NULL)
return NULL;
if ((nouveau_element->donnee = (char *) malloc (70 * sizeof (char))) == NULL)
return NULL;
return nouveau_element;
}
int insertion_dans_metro_vide (struct LigneMetro * metro, char *donnee,int numligne){
struct Station *nouveau_element;
if ((nouveau_element = alloc (nouveau_element)) == NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->num=numligne;
nouveau_element->precedent = NULL;
nouveau_element->suivant = NULL;
metro->debut = nouveau_element;
metro->fin = nouveau_element;
metro->taille++;
return 0;
}
int ins_fin_metro (struct LigneMetro * metro, char *donnee,int numligne){
struct Station *nouveau_element;
if ((nouveau_element = alloc (nouveau_element)) == NULL)
return -1;
strcpy (nouveau_element->donnee, donnee);
nouveau_element->num=numligne;
nouveau_element->suivant = NULL;
nouveau_element->precedent = metro->fin;
metro->fin->suivant = nouveau_element;
metro->fin = nouveau_element;
metro->taille++;
return 0;
}
void affiche(struct LigneMetro *metro){
struct Station *courant;
courant = metro->debut;
printf("ligne %d: [ ",courant->num);
while(courant != NULL){
printf("%s, ",courant->donnee);
courant = courant->suivant;
}
printf("]\n\n\n");
}
salut.
que d'enmerde avec le compilateur ! Le plus simple au lieu de se faire chier avec des outils finalement assez comliquer à configurer aurait été d'utiliser la ligne de commande.
Pour tes correspondance, il suffit de modifier ta structure station pour rajouter un pointeur de pointeur sur une station correspondance.
C'est alors un tableau que tu rempli, tu peux aussi éventuellement ajouter un entier pour compter le nombre correspondance.
que d'enmerde avec le compilateur ! Le plus simple au lieu de se faire chier avec des outils finalement assez comliquer à configurer aurait été d'utiliser la ligne de commande.
Pour tes correspondance, il suffit de modifier ta structure station pour rajouter un pointeur de pointeur sur une station correspondance.
C'est alors un tableau que tu rempli, tu peux aussi éventuellement ajouter un entier pour compter le nombre correspondance.
Bonjour à tous,
Je voudrai créer une liste de stations de métro en C++. Je sais qu'il faut créer une classe pour ça où on déclare un pointeur sur l'élement suivant et un autre vers l'element précedent sauf que là je suis larguée.Je remercierai du fond du coeur celui ou celle qui pourra bien m'aider!!!
Une débutante programmeuse deséspérée!!
Je voudrai créer une liste de stations de métro en C++. Je sais qu'il faut créer une classe pour ça où on déclare un pointeur sur l'élement suivant et un autre vers l'element précedent sauf que là je suis larguée.Je remercierai du fond du coeur celui ou celle qui pourra bien m'aider!!!
Une débutante programmeuse deséspérée!!
mais vous éte surs qu'il ne faut pas creer une classe dans laquelle on mettrait deux pointeurs?? Parce que le souci dans tout ca c est que tout mon code doit etre codé en C++!!!
Le plus gros souci c'est que tu utilises un post dont l'intitulé est : [lge C] Liste chainée.
Si tu veux, tu peux continuer à poser des questions ici : http://www.commentcamarche.net/forum/affich 11096561 liste chainee en c?#1
Cdlt
Si tu veux, tu peux continuer à poser des questions ici : http://www.commentcamarche.net/forum/affich 11096561 liste chainee en c?#1
Cdlt