Suppression au debut/fin dans les liste en c

Fermé
scarface15 - 28 déc. 2009 à 11:33
 scarface15 - 28 déc. 2009 à 14:14
Bonjour,
alors voila je suis toujours avec mon programme avec les listes alors maintenant après la solution avec l'ajout et tout , je voulais ajouter d'autre procédures qui me permettent de supprimer au début ou a la fin de ma liste , voila mon code aidez moi s'il vous plait.........@+

#include <stdio.h>
#include <stdlib.h>
typedef struct Element_Liste
{

char* marque_auto;
struct Element_Liste *suivant;
}Element;
//la création d'une nouvelle liste
void creation_liste(Element *nouveau_element)
{
char* marque=(char*)malloc(20*sizeof(char));
printf("bonjour,vous etes sur le point de creer une nouvelle liste \n");
printf("cette liste va contenir vos marques automobile de type caractere \n \n");
printf("******faites entrez une marque:******\n\n");
scanf("%s",marque);
fflush(stdin);
nouveau_element->marque_auto=marque;
nouveau_element->suivant = NULL;
}
void affiche(Element *liste)
{
printf("votre liste de marques contient les marques automobiles suivantes : \n \n");
do
{
printf("%s\n",liste->marque_auto);
liste=liste->suivant;
}
while((liste!=NULL));
printf("\n");

printf("merci,au revoir \n");
}
void ajout_a_la_fin_liste(Element *liste)
{
//déclaraion

Element *element;
//allocation d'un nouveau espace pour le nouveau element ajouter au début de la liste
char* marque_a_ajouter=(char*)malloc(20*sizeof(char));
//le saut d'une ligne
printf("\n");
//l'ajout d'un nouveau element au début de notre liste déja créer
printf("vous etes sur le point d'ajouter un nouveau element a la fin de votre liste de marques automobile : \n");
printf("\n");
printf("******faites entrez une nouvelle marque:******\n");
scanf("%s",marque_a_ajouter);
element =(Element*)malloc (sizeof (Element));
element->marque_auto = marque_a_ajouter;
element->suivant = NULL;
while(liste->suivant != NULL)
{
liste = liste->suivant;
}
liste->suivant=element;
}

Element* ajout_au_debut_liste(Element * liste)
{
Element *element;
//allocation d'un nouveau espace pour le nouveau element ajouter au début de la liste
char* marque_a_ajouter=(char*)malloc(20*sizeof(char));
//le saut d'une ligne
printf("\n");
//l'ajout d'un nouveau element au début de notre liste déja créer
printf("vous etes sur le point d'ajouter un nouveau element au debut de votre liste de marques automobile : \n");
printf("\n");
printf("******faites entrez une nouvelle marque:******\n");
scanf("%s",marque_a_ajouter);
element =(Element*)malloc (sizeof (Element));
element->marque_auto = marque_a_ajouter;
element->suivant = liste;

return element;
}
Element* supp_au_debut(Element * liste)
{
if(liste != NULL)
{

Element* liste_renvoyer = liste->suivant;
free(liste);
return liste_renvoyer;
}
else
{
return NULL;
}
}
int main(int argc, char **argv)
{
Element *liste=(Element*)malloc (sizeof (Element));
int choix;
int condition_ajout;
creation_liste(liste);
//ajouter d'autre élément si je veut bien sur
printf("voulez vous ajouter un autre element au debut/fin de votre liste ? \n 1=oui,2=non :\t ");
scanf("%d", &condition_ajout);
printf("\n");
while (condition_ajout == 1)
{
printf("entrer votre choix dans le menu d'ajout suivant : \n");
//demande du choix de l’utilisateur
printf("======= Menu des choix -ajout- ===== \n \n");
printf("1:ajouter un nouveau element au debut de votre liste. \n");
printf("2:ajouter un nouveau element a la fin de votre liste. \n \n");
printf("entrer votre choix \n");
scanf("%d",&choix);
//me donne le choix entre l'ajout au début de cette liste ou a la fin
switch (choix)
{
case 1:
liste=ajout_au_debut_liste(liste);
break;
case 2:
ajout_a_la_fin_liste(liste);
break;
default :
printf("vous n'avez pas fait de choix \n \n");
}
printf("voulez vous ajouter un autre element au debut/fin de votre liste ? \n 1=oui,2=non :\t ");
scanf("%d", &condition_ajout);
printf("\n");
}

//il me permet d'afficher toute ma liste depuis la création
supp_au_debut(liste);
affiche(liste);
system("pause");
return 0;
}

6 réponses

Salut,

Inspire toi ici suppression au début de la liste
0
non je te propose de voir mon code , parce-que je lai déja cette procédure mais ca marche pas il faut une boucle infini.......@+
0
Re,

Non je te propose de voir mon code
Pas très jolie ta réponse.
A mon tour je pourrais te dire que je ne suis pas ici pour faire à ta place et allez s'inspirer dans le tuto, n'est-ce pas?

Element* supp_au_debut(Element * liste)
{
  Element *ancien;
  ancien=liste;
  if(liste != NULL)
  {

    Element* liste_renvoyer = liste->suivant;
    free(ancien);
    return liste_renvoyer;
  }
  else
  {
    return NULL;
  }
}
et dans main
  liste=supp_au_debut(liste);
0
excusez moi , mais je vous remercie beaucoup pour ton aide , parce-que je croyais que dans ce forum je pourrais être aider et puis aider les autres .........bon journée.....pardon pour le dérangement.....@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re,

Ce n'est pas grave, et tu ne déranges personne ;-)
Tu n'as pas dit si ça fonctionne maitenant.
0
oui ca marche très bien , et maintenant je travaille sur la suppression a la fin c'est un peut difficile mais bon ...@+
0