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++
---------------
***Sohaieb***