Suppression d'element dans une liste

Suppression d'element dans une liste - C - Programmation

Marsh Posté le 14-12-2005 à 16:13:52    

Bonjour,
 
Mon soucis est que j'aimerais supprimer le premiere élement de la liste.
Mais je ne sait pas comment tester si je suis sur le premier elemen ou non
 
Ma suppresion fonctionne avec tous les autres élements.
 

Code :
  1. /*********Suppr**********/
  2. void suprAvecLettre(char c,Liste *l)
  3. {
  4. Liste p,prec;
  5. if (estVide(*l)==faux)
  6. {
  7.   prec=Precedent(c,*l);
  8.   if (((prec->suiv==NULL)) || (prec->suiv->c)!=c )
  9.   {
  10.    printf("La lettre tapé n'est pas dans la liste" );
  11.   }
  12.   else
  13.   {
  14.    p=prec->suiv;
  15.    prec->suiv=p->suiv;
  16.    free(p);
  17.   }
  18. }
  19. else
  20. {
  21.  printf("La Liste est vide" );
  22. }
  23. }


 
 
Code maintenant avec teste mais je n'en suis pas sur

Code :
  1. Liste Precedent(char c,Liste l) // renvoi l'element precedent c
  2. {
  3. Liste q,prec;
  4. prec=l;
  5. q=l->suiv;
  6. while(q!=NULL && ((char)q->c) < ((char)c))
  7. {
  8.  prec=q;
  9.  q=q->suiv;
  10. }
  11. return prec;
  12. }
  13. /*********Suppr**********/
  14. void suprAvecLettre(char c,Liste *l)
  15. {
  16. Liste p,prec;
  17. if (estVide(*l)==faux)
  18. {
  19.  if (*l)
  20.  {
  21.   prec=*l;
  22.   prec->suiv=p->suiv;
  23.   free(p);
  24.  }
  25.  else
  26.  {
  27.   prec=Precedent(c,*l);
  28.   if (((prec->suiv==NULL)) || (prec->suiv->c)!=c )
  29.   {
  30.    printf("La lettre tapé n'est pas dans la liste" );
  31.   }
  32.   else
  33.   {
  34.    p=prec->suiv;
  35.    prec->suiv=p->suiv;
  36.    free(p);
  37.   }
  38.  }
  39. }
  40. else
  41. {
  42.  printf("La Liste est vide" );
  43. }
  44. }


Reply

Marsh Posté le 14-12-2005 à 16:13:52   

Reply

Marsh Posté le 14-12-2005 à 16:40:01    

Ben soit il te faut un pointeur de tête, qui bouge jamais, soit il te faut une liste doublement chainées avec des prev pour sauvegarder un pointeur sur le précédent.

Reply

Marsh Posté le 14-12-2005 à 17:36:29    

Ecoute je ne travaille pas avec les listes doubles.$
Mon pointeur de tete est p et je voudrai le supprimer etpassé a la suite normalement.
Je fais un procédure void à moins que ce soit mieux que je fasse une function et je renvoi la nouvelle liste

Reply

Marsh Posté le 14-12-2005 à 19:16:24    

Bon maintenant c'est toi qui va m'écouter :mad:
Non, bon en fait j'ai rien d'autre à dire [:dawao]

Reply

Marsh Posté le 16-12-2005 à 14:58:41    

C bon j'ai reussi

Reply

Marsh Posté le 16-12-2005 à 14:59:01    

Merci comme meme

Reply

Marsh Posté le 16-12-2005 à 15:27:41    

rabzouze a écrit :

Merci comme meme


 
 
QUAND MEME bordel ! On écrit QUAND pas comme :fou: :fou: :fou:


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed