STRUCTURES DE DONNEES
 
 
INTRODUCTION
 

Ce document est un résumé concernant les structures les plus classiques rencontrées en informatique pour organiser des données. On suppose que le lecteur connaît déjà les tableaux et les enregistrements (exemple: record en Pascal, struct en C). Pour aborder les différentes structures de données présentées ici, le lecteur devra également bien maîtriser la notion de pointeurs et de gestion dynamique de la mémoire.

Les structures de données présentées ici sont:

  • les (arrays en anglais),

  • les (linked lists en anglais),

  • les (stacks en anglais),

  • les (queues en anglais),

  • les (binary trees en anglais).

Pour chacune de ces structures de données, nous présentons avant tout différentes manières de les modéliser. Ensuite, nous détaillons en langage algorithmique les principales opérations qui peuvent être appliquées sur ces structures. Enfin, pour certaines d'entre elles, nous développons quelques exemples d'utilisation. Une (C et Java) est également disponible.

 
NOTATIONS
 

Avant d'entrer dans les détails de chaque structure, nous introduisons ici quelques notations qui seront utilisées tout au long de ce document. Elles permettront de formaliser les modélisations proposées pour les différentes structures de données ainsi que les opérations applicables sur ces structures.

 
Opérateurs
 
  • *p est le contenu pointé par p;

  • T * est le type pointeur sur un élément de type T;

  • &x est l'adresse de l'élément x;

  •  y affecte la valeur y à la variable x;

  • /* x */ signifie que x est un commentaire;

  • =, <=, <, !=, >, >= sont les opérateurs de test d'égalité, d'infériorité ou d'égalité, d'infériorité, de différence, de supériorité et de supériorité ou d'égalité;

  • rendre x termine la fonction en cours et renvoie la valeur x à la fonction appelante;

  • x.y est le champ y dans la structure x;

  • xy est le champ y dans la structure pointée par x.

 
Déclarations
 
 
Fonction

On définit une fonction de la manière suivante.

fonction TR  f(TX x, TY y):
 ...
fin fonction;

Dans cet exemple, f a deux paramètres, x de type TX et y de type TY, et renvoie un élément de type TR.

 
Type

On déclare un nouveau type de donnée de la manière suivante.

type TX: TY *;

Dans cet exemple, le type TX est défini comme étant un pointeur sur un élément de type TY.

 
Enregistrement / Structure

On définit un enregistrement, appelé aussi une structure ici, de la manière suivante.

structure S:
 TX x;
 TY y;
fin structure;

Dans cet exemple, la structure s est composée de deux champs: x de type TX et y de type TY.

 
Types et constantes
 
  • BOOLEEN est le type booléen, il prend uniquement les valeurs VRAI ou FAUX;

  • ENTIER est le type nombre entier;

  • ELEMENT est le type des éléments stockés dans une structure de données;

  • NIL est une constante symbolique, un pointeur qui a cette valeur est un pointeur qui pointe sur rien du tout.

 
Instructions
 
  • T *  ALLOUER(T, ENTIER n) est une instruction qui alloue un espace mémoire pouvant contenir n éléments de type T. Si l'allocation est possible, la fonction retourne l'adresse de l'espace alloué. Dans le cas contraire, la valeur NIL est retournée, indiquant que l'allocation a échouée.

  • LIBERER(T * p) est une instruction qui libère l'espace mémoire pointé par p. Cet espace doit avoir été alloué auparavant avec l'instruction ALLOUER.

 
 
Copyright (c) 1999-2016 - Bruno Bachelet - bruno@nawouak.net - http://www.nawouak.net
La permission est accordée de copier, distribuer et/ou modifier ce document sous les termes de la licence GNU Free Documentation License, Version 1.1 ou toute version ultérieure publiée par la fondation Free Software Foundation. Voir cette licence pour plus de détails (http://www.gnu.org).