Académique Documents
Professionnel Documents
Culture Documents
liste l1;
l1=(liste)malloc(sizeof(cellule));
l1->valeur=val;
if(l==NULL){
l1->suivant=l1;
}
else{
liste l2=l;
l1->suivant=l;
while(l2->suivant!=l){
l2=l2->suivant;
}
l2->suivant=l1;
}
return l1;
}
3. Ajouter un élément à la fin d’une liste simplement chainée circulaire
liste AjoutFin(int val, liste l)
{ liste l1,l2;
l1=malloc(sizeof(cellule));
l1->valeur=val;
if(l==NULL)
{l1->suivant=l1;
return l1;
}
else
{
l1->suivant=l;
l2=l;
while(l2->suivant != l)
{l2= l2->suivant;
}
l2->suivant =l1;
return l;
}
}
4. Afficher une liste simplement chainée circulaire -itérative-
void AffListCir(liste l){
if(l!=NULL){
liste l1=l;
do{
printf("%d ",l1->valeur);
l1=l1->suivant;
}while(l1!=l);
printf("\n");
}
}
5. Supprimer la tête d’une liste simplement chainée circulaire
liste SuppTete(liste l){
if(l==NULL)
return NULL;
else
{
if (l->suivant==l) {
free(l);
return NULL;
}
else{
liste l1=l,l2=l;
l=l->suivant;
while (l2->suivant!=l1) {
l2=l2->suivant;
}
l2->suivant=l;
free(l1);
return l;
}
}
}
6. Supprimer la fin d’une liste simplement chainée circulaire
liste SuppFin(liste l){
if(l==NULL)
return NULL;
else
{
if (l->suivant==l) {
free(l);
return NULL;
}
else{
liste l1=l;
while (l1->suivant->suivant!=l) {
l1=l1->suivant;
}
free(l1->suivant);
l1->suivant=l;
return l;
}
}
}
7. Supprimer toutes les occurrences d'un élément quelconque d’une liste simplement
chainée circulaire -itérative-
liste SupprimerElemQlcIter(int val, liste l)
{
if(l!=NULL)
{
liste l1=l,l2;