Merci frangin
Voici ce que jai pu fare jusqu'ici mais je rencontre toujours beaucoup de difficulté:
#include <stdio.h>
#include <stdlib.h>
typedef struct Element Element;
struct Element
{
char * ville;
float densite;
float superficie;
int prix_du_Km;
Element *suivant;
};
typedef struct Liste Liste;
struct Liste
{
Element *premier;
};
void insertion(Liste *liste, char nvville)
{
/* Création du nouvel élément */
Element *nouveau = malloc(sizeof(*nouveau));
if (liste == NULL || nouveau == NULL)
{
exit(EXIT_FAILURE);
}
nouveau->ville=nvville;
/* Insertion de l'élément au début de la liste */
nouveau->suivant = liste->premier;
liste->premier = nouveau;
}
void suppression(Liste *liste)
{
if (liste == NULL)
{
exit(EXIT_FAILURE);
}
if (liste->premier != NULL)
{
Element *aSupprimer = liste->premier;
liste->premier = liste->premier->suivant;
free(aSupprimer);
}
}
void afficherListe(Liste *liste)
{
if (liste == NULL)
{
exit(EXIT_FAILURE);
}
Element *actuel = liste->premier;
while (actuel != NULL)
{
printf("%d -> ", actuel->ville);
actuel = actuel->suivant;
}
printf("NULL\n");
}
int main()
{
int menu()
{
int res=-1;
printf( "1 : ajout \n"
"2 : inserer en ordre croissant\n"
"3 : supprimer \n"
"4 : supprimer critere un seul\n"
"5 : supprimer critere all \n"
"10 : tests save and load\n"
"11 : parcourir\n"
"12 : Detruire liste\n"
"13 : copier liste\n"
"0 : Creer une liste de n objets\n");
scanf("%d",&res);
rewind(stdin);
return res;
}
int main()
{
Element *premier=NULL;
Element*e=NULL,*l2=NULL;
int fin=0,choix;
int flag=0;
//srand(time(NULL));
while (!fin){
choix=menu();
switch(choix){
case 1 :// ajout début
e=init();
if(++flag%2)
premier=ajout_debut1(premier,e);
else
ajout_debut2(&premier,e);
parcourir(premier);
break;
case 2 :// ajout fin
e=init();
if(++flag%2)
premier=ajout_fin1(premier,e);
else
ajout_fin2(&premier,e);
parcourir(premier);
break;
case 3 :
e=init();
if(++flag%2)
premier=inserer1(premier,e);
else
inserer2(&premier,e);
parcourir(premier);
break;
case 4 :// supprimer debut
if(++flag%2)
premier=suprimer_debut1(premier);
else
supprimer_debut2(&premier);
parcourir(premier);
break;
case 5 :// supprimer fin
if(++flag%2)
premier=suprimer_fin1(premier);
else
supprimer_fin2(&premier);
parcourir(premier);
break;
case 6 :// supprimer un seul élément selon un critère
premier=supp_critere_un(&premier);
parcourir(premier);
break;
case 7 :// supprimer tous les éléments selon un critère
premier=supp_critere_all(&premier);
parcourir(premier);
break;
case 8 :// extraire début (tête)
if((e = extraire_debut(&premier))!=NULL){
printf("extrait : %d%s\n",e->ville,e->suivant);
free(e);
}
else
printf("liste vide\n");
parcourir(premier);
break;
case 9 : //extraire à la fin
if((e = extraire_fin(&premier))!=NULL){
printf("extrait : %d%s\n",e->ville,e->suivant);
free(e);
}
else
printf("liste vide\n");
parcourir(premier);
break;
case 10 : //test save et load
sauvegarder_liste(premier); // sauver liste courante
detruire_liste2(&premier);// détruire la liste
premier=load_liste(); // loader la liste
parcourir(premier);
break;
case 11 : //parcourir
parcourir(premier);
break;
case 12 : // détruire liste
if(++flag%2)
premier=detruire_liste1(premier);
else
detruire_liste2(&premier);
parcourir(premier);
break;
case 13 : // copier une liste
l2= copier_liste(premier);
parcourir(premier);
parcourir(l2);
break;
case 0 :
creer_liste(&premier);
parcourir(premier);
break;
default : fin=1;
}
}
detruire_liste2(&premier);
detruire_liste2(&l2);
return 0;
}
J'ai comme impression que le grand problème c'est le main. Stp aides moi.
Mon autre pb sera au niveau des calculs; puisqil faut que lors de la compilation il y ait boutton pr prix de maniere qe l'on puisse connaitre le prix pr qiter d'une ville à l'autre.