Vous êtes sur la page 1sur 2

Durée : 3h Matière : PROG C II

Classe : TI 1.5 TP 6 Enseignant :


Date : Avril 2023 LISTE DOUBLEMENT CHAINEE Adel DAHMANE

Objectif : implémenter les primitives d’une liste doublement chaînée.

#include <stdio.h>
#include <stdlib.h>
struct cellule
{ int elem;
struct cellule *succ;
struct cellule *pred;
};
typedef cellule * liste;

//Prototypes de primitives fondamentales


// Les primitives ci-dessus sont implémentées de la même manière
// que dans la liste simplement chaînée.
/*
void affichage(liste l);
int taille(liste l);
bool vide(liste l);
liste premier(liste l);
liste dernier(liste l);
liste recherche (liste l, int n);
*/
void inserer_debut (liste * pl, int n);
void inserer_fin (liste * pl, int n);
void supprimer_debut (liste * pl);
void supprimer_fin (liste * pl);
void affichage (liste l);
liste recherche (liste l, int n);
void supprimer_cellule(liste * pl, int n);

int main()
{
liste l = NULL, p;
int n;
inserer_debut(&l,30); inserer_debut(&l,20);
inserer_debut(&l,10); inserer_fin(&l,40);
inserer_fin(&l,50); inserer_fin(&l,60);

printf("Liste : \n");
affichage(l);

printf("\nListe sans le premier element : \n");


supprimer_debut(&l);
affichage(l);

printf("\nListe sans le dernier element : \n");


supprimer_fin(&l);

Page 1 sur 2
affichage(l);

printf("\nListe sans l'element 40 : \n");


supprimer_cellule(&l, 40);
affichage(l);
}

void affichage(liste tete)


{
liste p =tete;
if (tete == NULL)
printf("Liste vide\n");
else
{ while(p!=NULL)
{ printf("%d\t",p->elem); p=p->succ; }
}
}

void inserer_debut(liste * pl, int n)


{
/* insère une nouvelle cellule (l'élément n) au début d’une liste passée
par référence et change le pointeur du premier élément de la liste. */
}

void inserer_fin(liste * pl, int n)


{
//insère une nouvelle cellule (élément n) à la fin d’une liste
}

void supprimer_debut(liste * pl)


{
/* supprime la première cellule de la liste et change sa tête à travers pl.
Aucun changement ne sera fait, si la liste est vide */
}

void supprimer_fin(liste * pl)


{ // Pré-condition : La liste est supposée non vide.
//Post-condition : supprime la dernière cellule de la liste.
}

liste recherche (liste l, int n)


{ /* recherche la première cellule contenant l'élément n dans la liste l
et retourne son adresse s'il existe, sinon NULL. */
liste p =l;
while (p!=NULL)
{ if (p->elem == n)
return p;
p = p ->succ;
}
return NULL;
}

void supprimer_cellule(liste * pl, int n)


{
//Supprime la première cellule contenant l'entier n.
}

Page 2 sur 2

Vous aimerez peut-être aussi