Vous êtes sur la page 1sur 5

Révision listes chainées

Déclaration

Déclarer une liste d’entier par exemple


Type

Liste=^cellule

Cellule=enregistrement

Inf :entier ;

Svt :Liste ;

Fin enreg ;

On peut déclarer autrement


Type

Cellule=enregistrement

Info :entier ;

Svt :^cellule ;

Fin enreg ;

Var

T,p,q :Liste ; /* ou T,p,q :^cellule ;*/

La création d’une liste chainée :

1-creation FiFO ou de gauche à droite :

Les éléments sont rajoutés à la liste au fur et à mesure à partir de la tête de la liste.

Exemple : Soit N entier, créer une liste de ces entiers.

10, 14, 5

Création FiFo
La liste est créée suivant ces étapes :

q,T @1 10 Nil

T
10 14Nil

T 10 14 5 Nil
Premier solution fifo :

Type

Liste=^cellule

Cellule=enregistrement
Inf :entier ;

Svt :Liste ;

Fin enreg ;

Var T P q

T,p,q :Liste ; @1 @1
@1
i,N :entier ;
Nil
debut
repeter lire(N) ;jusqu’à N>0 ;

Allouer(T) ; lire(T^.info) ; T^.svtNil ; qT ;

i2 ;

Tantque i<=N faire

Allouer(p) ; lire(p^.info) ; p^.svtNil ; q^.svtp ;qp ; ii+1 ;

Fait ;

qNil ; pNil ;

Deuxième solution fifo

debut T p q
@1 @3
i1 ; TNil ; @3
Tantque i<=N faire @1 @2 @3
Allouer(p) ; lire(p^.info) ; 10 @2 14 @3 5 Nil
Nil
Si T=Nil alors Tp

Sinon q^.svtp ;

Fsi

qp ; p^.svtNil ; ii+1;

Fait ;

qNil ; pNil ;
T P

Création Lifo : de droite à gauche @3 @2


La création commence par le dernier élément @1

10 Nil
@2
14 @1 10 Nil
T

@3

T 10 Nil
5 @2 14 @1

TNil ; i1 ;

Tantque i<=N faire

Allouer(p) ;

Lire(p^.info) ;

P^.svtT ;

Tp ;

Ii+1 ;

Fait ;

Exercice :
Soit deux listes d’entiers écrire une AP qui permet de créer une 3eme liste composée du max des
éléments des deux listes dans le même rang.

Algorithme Max_L1_L2 ;

Type
Liste=^cellule

Cellule=enregistrement
Info :entier ;

Svt :Liste ;

Fin enreg ;

Var
L1,L2,L : liste ;

procedure L_max(E/L1,L2:Liste; S/L:Liste);

var
15 9 14 Nil
p,q:Liste; L1 2

max :entier ;
3 Nil
debut L2 7

LNil; p
7 15 9 14 Nil
L q

Tantque L1<>Nil et L2<>Nil faire

Allouer(p) ;

Si L1^.info>L2^.info alors maxL1^.info

Sinon maxL2^.info ;

Fsi ;

p^.infmax ;

si L=Nil alors Lp

sinon q^.svtp ;

fsi ;

p^.svtNil ; qp ;

L1L1^.svt ; L2L2^.svt ;
fait ;

Tantque L1<>Nil faire

Allouer(p) ; p^.infoL1^.info ;

q^.svtp ; p^.svtNil ; qp ; L1L1^.svt ;

fait ;

Tantque L2<>Nil faire

Allouer(p) ; p^.infoL2^.info ;
q^.svtp ; p^.svtNil ; qp ; L2L2^.svt ;

fait ;

fin ;

Vous aimerez peut-être aussi