Liste chainée: type file d'attente

cunbreizh Messages postés 2 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 7 janvier 2004 - 7 janv. 2004 à 09:47
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 - 7 janv. 2004 à 23:12
MAIDER! MAIDER!Votre texte ICIVotre texte ICI
débutant dans la prog en C. Je cherche à programmer de la manière la plus simple et basic possible une structure de type file d'attente fifo (avec les fonctions suivantes ajout d'1 élements, le retrait, et l'affcihage de la file). Seulement voilà, après maintes tentative! je n'ai pas l'impression d'arriver à ajouter, de retirer quoique ce soit, et d'afficher n'importe quoi!
Alors s'il y a quelqu'un qui un algo ou un source, le plus simple possible afin que je puisse comprendre mes erreurs, je suis prenneur. Ou tout betement laisser vos conseils....
PLEASE HELP!!!

4 réponses

gagaet22 Messages postés 32 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 17 janvier 2005
7 janv. 2004 à 12:12
Pourquoi ne pas mettre ton code ca permettrait de voir ou tu en es !!!!!!
0
cunbreizh Messages postés 2 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 15:23
Voilà mon code, j'ai suivi scrupuleusement l'algo que l'on m'a
donné. Mais j'ai comme meme l'impression qu'il ne doit pas tout à fait exact.
J'espère que cela va t'aider comme meme.

#include<stdio.h>
#include
#include<stdlib.h>

struct cell{int val; struct cell *suiv;};

void ajout(struct cell *pdeb, struct cell *pfin)
{
struct cell *pnew;

if(pfin==NULL)
{
pdeb=pnew;
pfin->suiv=pnew;
}
else
{
pfin=pnew;
}
}

void retrait(struct cell *pdeb, struct cell *pfin)
{
struct cell *ptemp;

if(pdeb==NULL)
printf("retrait impossible\\n");
else
{
ptemp=pdeb; //ptemp est la valeur retiree
//ptemp est supprime.
if(pdeb==pfin)
pfin=NULL;
else
{
pdeb=pdeb->suiv;
}
}
}

void affiche(struct cell *pdeb)
{
struct cell *ptemp;

if(pdeb==NULL)
printf("rien a afficher\\n");
else
{
ptemp=pdeb;
while(ptemp!=NULL)
{
printf("%d\\t", ptemp->val);
ptemp=ptemp->suiv;
}
}
}

void main(void)
{
struct cell *pdeb;
struct cell *pfin=NULL;

pdeb=calloc(10,sizeof(struct cell));

ajout(pdeb, pfin);
retrait(pdeb, pfin);
affiche(pdeb);
}
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
7 janv. 2004 à 23:11
deja pour commencer :

void ajout(struct cell *pdeb, struct cell *pfin)
{
struct cell *pnew;

if(pfin==NULL)
{
pdeb=pnew;
pfin->suiv=pnew;
}
else
{
pfin=pnew;
}
}

ici, tu fait des attributions a tes pointeurs, mais en local, ce qui n'a aucune incidence sur quoi que se soit ni ou que se soit, ce quil faut que tu fasse, c'est passer les adresses des pointeurs pour avoir ceci en parametre (struct cell **pdeb, struct cell **pfin)

comme ca tu pourra modifier tes pointeurs comme ceci : *pfin = *pnew;
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
7 janv. 2004 à 23:12
dsl, je corrige :

*pdeb = pnew;

ou encore

*pfin = pnew;
0
Rejoignez-nous