Aller au contenu

Aider Moi sur Un Exercice En Language C svp


sohaieb

Messages recommandés

Membre, 32ans Posté(e)
sohaieb Membre 14 messages
Baby Forumeur‚ 32ans‚
Posté(e)

Bonjour,

j'ai crée une biblihothèque "Liste.h" et quand je fait appel à la fonction "supr_oc" qui suprime les occurences d'un élement entrer dans la liste alors la fonction retourne un erreur c'est ça le code source alors aider moi merci d'avance :

-----------------------------------------------------------------------------------------------------------

typedef struct cellule{

int x;

cellule * suiv;

}cellule;

//----------------------------saisi entète de liste-----------------------------

cellule * saisi_entete(cellule *l){

cellule * nouv;

nouv=(cellule*)malloc(sizeof(cellule));

printf("entrer la cellule 1 de la liste\n");

scanf("%d",&(nouv->x));

nouv->suiv=l;

l=nouv;

return l;

}

//----------------------------verification si la liste est vide-----------------

int vevide(cellule *l){

if(l=NULL){

return 0;

}else {return 1;}

}

//----------------------------saisi fin de la liste ----------------------------

cellule * saisi_fin(cellule *l){

cellule *p,*nv;

if(vevide(l)==0){

l=saisi_entete(l);

}else{

nv=(cellule*)malloc(sizeof(cellule));

p=l;

while(p->suiv!=NULL){

p=p->suiv;

}

p->suiv=nv;

nv->suiv=NULL;

printf("entrer lentier a ajouter a la fin:");

scanf("%d",&(nv->x));}

return l;

}

//--------------------------------Taille De la Liste----------------------------

int taille(cellule * l){

int nb=1;

cellule *p;

p=l;

while(p->suiv!=NULL){

nb++;

p=p->suiv;

}

return nb;

}

//-----------------------------saisie position----------------------------------

cellule * saiaie_position(cellule * l){

int pos,i=1,ta;

cellule *p;

cellule *nv=(cellule *)malloc(sizeof(cellule));

p=l;

ta=taille(l);

do{

printf("Entrer la position de saisi entre [2..%d]:\n",ta);

scanf("%d",&pos);

}while(pos<1 || pos>ta);

if(pos==1){

l=saisi_entete(l);

}else if(pos>ta){

l=saisi_fin(l);

}else{

printf("Entrer l''element à saisi \n");

scanf("%d",&(nv->x));

for(i=1;i<pos-1;i++){

p=p->suiv;

}

nv->suiv=p->suiv;

p->suiv=nv;

}

return l;

}

//----------------------------Suppression debut---------------------------------

cellule * supr_deb(cellule *l){

cellule *p;

p=l;

if(l==NULL){l=NULL;}else if(l->suiv==NULL){l=NULL;free(p);}else{

l=l->suiv;

free(p);}

return l;

}

//------------------------------Supression Fin----------------------------------

cellule * supr_fin(cellule *l){

cellule * p,*p1;

p=l;

if(l==NULL){l=NULL;

}else

if(l->suiv==NULL){

l=NULL;

free(p);

}else{

while(p->suiv!=NULL){

p1=p;

p=p->suiv;

}

p1->suiv=NULL;

free(p);

}

return l;

}

//-------------------------------Suppression Pos--------------------------------

cellule * supr_pos(cellule *l,int pos,int ta){

int i;

cellule *p,*p1;

p=l;

p1=p;

if(pos==1){l=supr_deb(l);}else if(pos==ta){l=supr_fin(l);}else{

for(i=1;i<pos;i++){

p1=p;

p=p->suiv;

}

p1->suiv=p->suiv;

free(p);}

return l;

}

//-------------------------------Suppression occurance--------------------------

cellule * supr_ocu(cellule *l){

int a,ta,i;

cellule *p;

p=l;

ta=taille(l);

printf("entrer lelement a supprimer :\n");

scanf("%d",&a);

while(p->suiv!=NULL){

while(p->x==a){

p=supr_deb(p);

}

p=p->suiv;

}

return l;

}

//----------------------------affichage de liste--------------------------------

void affich(cellule *l){

cellule *t=l;

while(t!=NULL){

printf("%d||",t->x);

t=t->suiv;

}

}

------------------------------------------------------------------------------------------------------------

Configuration: Windows Vista / Firefox 3.6.16/Borland C++

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×