Vous êtes sur la page 1sur 3

Les listes simplement chainées circulaire

1. La structure d’une liste simplement chainée circulaire d’entiers

typedef struct cellule{


int valeur ;
struct cellule * suivant;
} cellule, *liste;

2. Ajouter un élément en tête d’une liste simplement chainée circulaire

liste AjoutTete(int val,liste l){

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;

if(l->suivant==l && l->valeur==val)


{
free(l);
return NULL;
}
while(l1->suivant!=l)
{
if(l->valeur==val)
{
l=SuppTete(l);
l1=l;
}
else
{
if(l1->suivant->valeur==val){
l2=l1->suivant;
l1->suivant=l2->suivant;
free(l2);
}
else
l1=l1->suivant;
}
}
}
return l;
}

Vous aimerez peut-être aussi