Vous êtes sur la page 1sur 6

TP2(LISTE DOUBLEMENT

CHAÎNÉE)

MAIN

Exempl
e
d’exécu
tion
Code
#include<stdlib.h>
#include<stdio.h>

source : #include<string.h>
typedef struct etudiant{
char nom[50];
float moyenne;
struct etudiant *suivant;
struct etudiant *precedent;
}etudiant;
typedef struct list{
etudiant *premier;
etudiant *dernier;
}list;
list* creerliste(){
list *ls=malloc(sizeof(list));
ls->premier=ls->dernier=NULL;
return ls;
}
void insererdebut(list *p,char *n,float m){
etudiant *nouveau=malloc(sizeof(etudiant));
nouveau->moyenne=m;
strcpy(nouveau->nom,n);
if(p->premier==NULL){
p->premier=p->dernier=nouveau;
nouveau->suivant=nouveau->precedent=NULL;

}
else{
nouveau->suivant=p->premier;
p->premier->precedent=nouveau;
p->premier=nouveau;

}
}
void insererfin(list *p,char *n,float m){
etudiant *nouveau=malloc(sizeof(etudiant));
nouveau->moyenne=m;
strcpy(nouveau->nom,n);
if(p->premier==NULL){
p->premier=p->dernier=nouveau;
nouveau->suivant=nouveau->precedent=NULL;

}
else{
nouveau->precedent=p->dernier;
p->dernier->suivant=nouveau;
nouveau->suivant=NULL;
p->dernier=nouveau;
}
}
float moyenne(list *p){
int t=0;
float m=0;
etudiant *c=p->premier;
while(c!=NULL){
m=m+c->moyenne;t++;
c=c->suivant;
}
return m/t;
}
void afficherdebut(list *p){
if(p->premier==NULL)
printf("la liste est vide \n");
else{
etudiant *c=p->premier;
while(c!=NULL){
printf(" nom : %s moyenne : %f ",c->nom,c->moyenne);
c=c->suivant;
}
}
}
void afficherfin(list *p){
if(p->premier==NULL)
printf("liste vide\n");
else{
etudiant *c=p->dernier;
while(c!=NULL){
printf(" nom : %s moyenne : %f ",c->nom,c->moyenne);
c=c->precedent;
}
}
}
void supprimertete(list *p){

if(p->premier!=NULL && p!=NULL){


etudiant *c=p->premier;
p->premier=c->suivant;
if(c->suivant!=NULL)
p->premier->precedent=NULL;
else
p->dernier=NULL;
free(c);}
else{
printf("suppression impossible\n");
}
}
void supprimerfin(list *p){
if(p->premier!=NULL && p!=NULL){
etudiant *c=p->dernier;

p->dernier=p->dernier->precedent;
if(c->precedent!=NULL){

p->dernier->suivant=NULL;}
else p->premier=NULL;
free(c);

}
else{
printf("suppression impossible\n");
}
}

void main(){
list *lsd=creerliste();
insererfin(lsd,"ilyass",14.33);
insererfin(lsd,"ali",12.34);
insererfin(lsd,"anouar",17.13);
printf("Votre liste : \n");
afficherdebut(lsd);printf("\n");
printf("la moyenne de votre liste = %f\n",moyenne(lsd));
printf("la liste apres la suppression a la fin : \n");
supprimerfin(lsd);
afficherdebut(lsd);printf("\n");
supprimertete(lsd);
printf("la liste apres la suppression au debut : \n");
afficherdebut(lsd);printf("\n");
printf("la liste apres la suppression a la fin : \n");
supprimertete(lsd);
afficherdebut(lsd);
supprimertete(lsd);

Vous aimerez peut-être aussi