Professional Documents
Culture Documents
CHAPITRE II
STRUCTURES SEQUENTIELLES : LISTES, PILES ET FILES
Les structures de donnes spcifient la manire de reprsenter les donnes dun problme qui peut tre rsolu par ordinateur laide dun algorithme. Le choix dune structure de donnes doit prendre en considration la taille mmoire ncessaire son implmentation ainsi que sa facilit daccs. Une structure de donnes peut tre choisie indpendamment du langage de programmation qui est utilis pour lcriture du programme manipulant ses donnes. Ce langage est suppos offrir, dune faon ou dune autre, les mcanismes ncessaires pour dfinir et manipuler ces structures de donnes. Les langages de programmation modernes permettent dattribuer et manipuler la mmoire disponible de la machine sous forme de variables isoles les unes des autres, sous forme de tableaux, de pointeurs indiquant la localisation dans la mmoire de lobjet qui nous intresse ou laide de structures prdfinies plus complexes. Dans le cas des variables isoles ou des tableaux statiques, la place en mmoire est attribue par le compilateur et ne peut faire lobjet de modification pendant lexcution du programme. Cependant dans le cas de tableaux dynamiques ou listes chanes, lallocation de la mmoire ncessaire est effectue pendant lexcution et par consquent, elle peut augmenter ou diminuer selon le besoin. Les structures de donnes classiques peuvent tre classes en trois catgories distinctes : les structures linaires ou squentielles : Ce sont les structures qui peuvent tre reprsentes par des listes linaires telles que les tableaux ou des listes chanes ayant une seule dimension. Dans cette catgorie, il y a lieu de citer les piles, pour lesquelles les donnes peuvent tre ajoutes ou supprimes partir dune mme extrmit ; et les files o les donnes peuvent tre ajoutes partir dune extrmit tandis quelles sont supprimes de lautre extrmit. les structures arborescentes et en particulier les arbres binaires. les structures relationnelles qui prennent en compte des relations existant ou non entre les entits quelles dcrivent.
Les structures de donnes squentielles ou linaires (objet de ce chapitre) sont appeles ainsi parce que les donnes sont organises sous forme dune liste les unes derrires les autres. Elles peuvent tre reprsentes laide dun tableau ou sous forme dune liste chane.
I. LISTES
Une liste est une suite ordonne dlments dun type donn et elle peut contenir zro, un ou plusieurs lments. Exemples : -
(3, 5, 7, 9, 12) est une liste dentiers (Printemps, Et, Automne, Hiver) est la liste des saisons de lanne.
Le nombre dlments dune liste est appel longueur de la liste. Par consquent, une liste vide est de longueur nulle. Le premier lment de la liste est appel la tte de la liste. La queue dune liste est dfinie comme tant son dernier lment pour certains ou bien la liste des lments obtenue par la suppression de la tte de la liste, par dautres. Les listes dont les lments peuvent tre ordonns (par une relation dordre totale) sont les listes les plus utilises en pratique telles que les entiers, chanes de caractres, etc. 10
La cellule qui se trouve ladresse dbut contient la tte de la liste et le dernier bloc a une adresse ayant la valeur nulle qui signifie quil ny a pas de cellules la succdant. Par consquent une liste vide a une adresse dbut qui est nulle. Lavantage dutiliser une liste chane au lieu dun tableau pour reprsenter une liste est clair. Elle nous permet dviter: - lutilisation de structure mmoire contigu qui ncessite un dcalage lors de la procdure dinsertion ou de suppression, - la rservation dune longueur maximale de la liste. Pour accder aux diffrents lments dune liste chane, on commence par ladresse dbut (tte) qui permet daccder au premier bloc ou cellule. En accdant au premier bloc de la liste, on peut donc lire son contenu qui comprend, entre autre, ladresse du deuxime bloc qui nous permet son tour daccder au deuxime bloc et ainsi de suite. Le dernier bloc de la liste doit contenir une adresse spciale nous permettant de savoir quil sagit du dernier lment de la liste. Cette adresse est appele nil, NULL, ou null dans les diffrentes implmentations de langages de programmation. 11
Les dtails dimplmentation dune liste chane contenant des entiers peuvent tre dfinis en C/C++ comme suit :
VARIANTES DE LA REPRESENTATION CHAINEE DES LISTES a) Liste chane avec lment fictif
Pour viter un test spcial pour linsertion et la suppression en dbut de liste, la liste est reprsente sous forme homogne. Adresse de tte
15 25 13
Adresse nulle
Adresse nulle
Ceci peur tre ralis en dfinissant deux pointeurs dans la structure Bloc de la manire suivante : Les procdures dinsertion et de suppression doivent tre modifies pour tenir compte du pointeur prec de la manire suivante : Remarque : Le parcours des listes peut tre encore facilit avec les listes circulaires (simple ou double).
II. PILES
Les piles sont des listes particulires dans lesquelles les insertions ainsi que les suppressions se font toujours la mme extrmit de la structure appele sommet. Les piles sont parfois appeles des structures LIFO (Last In First Out) signifiant le dernier qui arrive est le premier qui sort. Le type abstrait de donnes Pile comprend les oprations suivantes : Initialisation dune pile (InitPile) : cest exactement la mme fonction pour les listes Une fonction SommetDePile qui retourne le sommet de la pile Une procdure de dpilement Depiler permettant la suppression de llment se trouvant au sommet de la pile (POP en Anglais) Une procdure dempilement Empiler permettant linsertion dun lment au sommet de la pile (PUSH en Anglais) Une fonction PileVide retournant vrai si la pile est vide faux sinon. 12
6 8 2
LongMax-1
.. Espace vide
6
Sommet
13
III. FILES
Les files constituent un autre cas particulier des listes o les lments sont insrs une extrmit (la queue de la file) et la suppression se fait lautre extrmit (la tte de la file). Les files sont aussi appeles structures FIFO (First In First Out) c'est--dire le premier qui arrive cest le premier qui sort . Les oprations classiques pour les files sont similaires celles pour les piles sauf que cette fois-ci les insertions se font la queue de la file au lieu de la tte. Il convient aussi de changer la terminologie prcdente (utilise pour les piles) dans le cas des files. Les oprations classiques sur les files peuvent tre dcrites comme suit : - InitialiserFile : permet de crer une file vide. - TeteDeFile : retourne le premier lment de la file. - QueueDeFile : retourne le dernier lment de la file. - Enfiler : insre un nouvel lment la fin de la file (EnQueue). - Defiler : supprime le premier lment de la file (DeQueue). - FileVide : renvoie vrai si la file est vide et faux sinon.
15
39
11
QueueDeFile
Tte de File
15 39
Queue de File
11 null
Les dtails dimplmentation peuvent tre dcrits comme suit : APPLICATIONS Lapplication la plus classique est la file dattente, et elle sert beaucoup en simulation. Elle est aussi trs utilise aussi bien dans la vie courante que dans les systmes informatiques. Par exemple, elle modlise la file dattente des clients devant un guichet, les travaux en attente dexcution dans un systme de traitement par lots, ou encore les messages en attente dans un commutateur de rseau tlphonique. On retrouve galement les files dattente dans les programmes de traitement de transactions telle que les rservations de siges davion ou de billets de thtre. 14