// Librairie list.h
void initliste (Tliste &l){
l.tete=NULL;
l.ec=NULL;
l.predec=NULL;
}
bool listevide(Tliste l){
return(l.tete= =NULL);
}
void entete(Tliste &l){
l.ec=l.tete;
l.predec=NULL;
}
void suc(Tliste &l){
if (l.ec= =NULL){
//Erreur sur successeur}
else{l.predec=l.ec;l.ec=l.ec ->s;}
}
void valec (Tliste l, int &val){
if(l.ec= =NULL){
//Erreur sur valeur}
else{val=l.ec->v;}
}
void modifec (Tliste l, int val){
l.ec->v=val;
}
void supec (Tliste &l){
Telement *x;
if(l.ec= =NULL){
//Erreur de supression}
else{x=l.ec;
if(l.ec= =l.tete){
l.tete=l.ec->s; l.ec=l.tete;}
else{l.predec->s=l.ec->s; l.ec=l.ec->s;}
}delete(x);
}
void ajoutg ( Tliste &l, int val){
Telement *x;
if(listevide(l)){
x=new(Telement);
x->v=val;
x->s=NULL;
l.tete=x;
l.ec=x;}
else if(l.ec= =NULL){//Erreur sur ajout gauche}
else{x=new(Telement);
x->v=val;
if(l.tete= =l.ec){
x->s=l.ec;
l.ec=x;
l.tete=x;}
else{x->s=l.ec;
l.predec->s=x;
l.ec=x;}
}
}
void ajoutd(Tliste &l, int val){
Telement *x;
if(listevide(l)){
x=new(Telement);
x->v=val;
x->s=NULL;
l.tete=x;
l.ec=x;}
else if(l.ec= =NULL){
//Erreur sur ajout droit}
else{x=new(Telement);
x->s=l.ec->s;
x->v=val;
l.ec->s=x;
l.predec=l.ec;
l.ec=x;}
}
//main.cpp
#include <conio.h>
#include <iostream.h>
#include "list.h"
typedef struct Telement{
int v;
Telement *s;
}Telement;
typedef struct{
Telement *tete;
Telement *ec;
Telement *predec;
}Tliste;
int val;
Tliste l;
void main(){
initliste(l);
do{
//Element a ajouter
cin>>val;
ajoutd(l, val);}while (val!=-1);
entete(l);
//Liste des elements de la liste
while (l.ec!=NULL){
valec(l,val);
printf(val);
suc(l);}
getch();
}