• Aucun résultat trouvé

Les Piles et les Files

N/A
N/A
Protected

Academic year: 2022

Partager "Les Piles et les Files"

Copied!
12
0
0

Texte intégral

(1)

Les Piles et les Files

(2)

Les Piles

Dans une pile : l’insertion(empiler) et la suppression(dépiler) se font à une seule extrémité : le sommet de pile. On parle de structures LIFO : Last In First Out.

Opérations

Init :  Pile {Initialisation de la pile}

empiler : Pile x Elément  Pile {Ajouter un elt au sommet}

dépiler : Pile  Pile {Retirer un elt du sommet}

est-vide : Pile  Booléen {vérifier si la pile est vide}

Sommet Info n

Info n-1

. . . Info 1

(3)

Avant l’empilement de info 3 :

Empilement

Après l’empilement de info 3 :

Info 2

Info 1

Info 3

Info 2

Info 1

Avant dépilement de info 3 :

Dépilement

Après dépilement de info 3 :

Info 2

Info 1 Info 3

Info 2

Info 1

Sommet

Sommet

Sommet

Sommet

(4)

Représentation des piles

Représentation chaînée : Les différents éléments sont chaînés entre eux. Le sommet est représenté par le 1er élément de la liste (dernier inséré).

La pile vide est donnée par le pointeur NIL.

Type Pile=^cel;

cel=record

val : type_val;

suiv : pile;

end;

Var PileD : Pile;

en

e1

P:Pile

.

. .

(5)

Procédure d’empilement:

Procedure empiler (Var P : Pile);

Var c: Pile;

Begin New(c);

readln(c^.val);

c^.suiv:=P;

P:=c;

End;

en

e1

P

.

. .

1

1

en+1

c

2

2

(6)

Procédure de dépilement:

Procedure dépiler (Var P : Pile);

Var E: Pile;

Begin E:=P;

If E=nil then

writeln(‘Pile vide’) Else

Begin

P:=P^.suiv;

dispose(E);

End;

End;

1

E

en

e1

P

.

. .

en-1 1

(7)

Les files

- insertions (ajouts) à une extrémité (queue).

- suppressions(retraits) à l’autre extrémité (tête).

- Analogie avec les files d’attente : FIFO ou First In First Out.

Init :  File

ajouter : File x Elément  File {enfiler}

retirer : File  File {défiler}

premier : File  Elément est-vide : File  Booléen

Info 1 Info 2 Info 3 . . . Info n

Tête Queue

(8)

Avant l’enfilement de info 3 :

Ajout ou Enfilement

Après l’enfilement de info 3 :

Avant défilement de info 1 :

Retrait ou Défilement

Après défilement de info 1 :

Info 1 Info 2 Info 1 Info 2 Info 3

Info 1 Info 2 Info 3 Info 2 Info 3

Tête Queue Tête Queue

Tête Queue Tête Queue

(9)

Représentation des Files

Représentation chaînée : Les différents éléments sont chaînés entre eux.

La File vide est donnée par le pointeur NIL.

Type File=^cel;

cel=record

val : type_val;

suiv : file;

end;

Var Tet : File;

. . .

Tet

NIL

(10)

Procédure d’enfilement (ajout):

Procedure Ajouter (Var F : File);

Var c, q: File;

Begin New(c);

readln(c^.val);

c^.suiv:=nil;

If F=nil then F:=c Else

Begin q:=F;

while q^.suiv <> nil do q:=q^.suiv;

q^.suiv:=c;

end;

End;

e1

en

F

.

. .

en+1

c

1

2

2

q

1

(11)

Procédure de défilement (Retrait ou suppression):

Procedure Retirer (Var F : File);

Var q: File;

Begin q:=F;

If q=nil then writeln(‘File vide’) Else

Begin

F:=F ^.suiv;

dispose(q);

end;

End;

e1 e2

F

.

. .

en 1

2

q

1

2

(12)

Exercice 1 sur Les Piles et les Files

1) Supposons que les éléments A, B, C et D sont insérés dans une pile dans cet ordre. Maintenant on dépile la pile deux fois. Quels éléments sont dépilés et dans quel ordre ?

2) Supposons que les deux éléments que nous avons dépilés ont été insérés dans une file d'attente dans l'ordre dans

lequel ils ont été dépilés. Quel est le premier élément à retirer de la file d'attente ?

3) Supposons que nous ayons les éléments A, B, C, D, et que nous les insérons dans une file dans cet ordre. Ensuite, nous retirons le premier élément de la file d'attente, à répétition, jusqu'à ce qu'elle soit vide, en insérant, en même temps, chaque élément enlevé dans une pile. Si nous dépilons,

maintenant, tous les éléments de la pile, quel est l'ordre dans lequel les éléments sont dépilés?

4) En tenant compte des résultats ci-dessus, Ecrire un programme qui utilise une pile pour inverser une file.

Références

Documents relatifs

• Mettre à jour le pointeur queue vers le dernier élément (la queue de la file);. • Mettre à jour la taille de

Useful to make sure files are identical, DIR Sorted current or declared directory files with sizes and disk space used and remaining are displayed on console with this command..

Then insert the newly created CP/M operations diskette in disk drive A, and insert the NEVADA SOFTWARE distribution diskette in drive Band type (ctl-c) to

[r]

SpaceHeader: TYPE = RECORD [ link: POINTER TO SpaceHeader, segment: DataSegmentHandle];. InitSpace:

(ctxb+ctx).selist.[r]

ReserveVM: PROCEDURE [base:PageNurnber.. GetVMBounds: PUBLIC PROCEDURE RETURNS [VMBounds] - BEGIN. FOR ffvrnp INCREASING IN [ffvrnp .• lfvrnp] DO IF

AddressFromPage, DataSegmentHandle, DataSegmentObject, FileSegmentHandle. FileSegmentObject, Object, ObjectHandle, ObjectType, PageCount. PageNumber,