Pour essayer de simplifier à l'extrême la description d'une pile et d'une file d'attente, ce sont deux chaînes dynamiques d'éléments d'information accessibles à partir d'un bout de la chaîne et la seule vraie différence entre elles est le fait que:
lorsque vous travaillez avec une pile
- vous insérez des éléments à une extrémité de la chaîne et
- vous récupérez et / ou supprimez des éléments du même bout de la chaîne
avec une file d'attente
- vous insérez des éléments à une extrémité de la chaîne et
- vous les récupérez / supprimez de l'autre extrémité
REMARQUE : J'utilise le libellé abstrait de récupérer / supprimer dans ce contexte car il y a des cas où vous récupérez simplement l'élément de la chaîne ou dans un sens, le lisez ou accédez à sa valeur, mais il existe également des cas où vous supprimez l'élément de la chaîne et enfin il y a des instances où vous effectuez les deux actions avec le même appel.
L'élément mot est également utilisé à dessein afin d'abstraire autant que possible la chaîne imaginaire et de la découpler des termes spécifiques du langage de programmation. Cette entité d'information abstraite appelée élément peut être n'importe quoi, à partir d'un pointeur, d'une valeur, d'une chaîne ou de caractères, d'un objet, ... selon la langue.
Dans la plupart des cas, bien qu'il s'agisse en fait d'une valeur ou d'un emplacement mémoire (c'est-à-dire un pointeur). Et les autres ne font que cacher ce fait derrière le jargon du langage <
Une file d'attente peut être utile lorsque l'ordre des éléments est important et doit être exactement le même que lorsque les éléments sont arrivés pour la première fois dans votre programme. Par exemple, lorsque vous traitez un flux audio ou lorsque vous mettez en mémoire tampon des données réseau. Ou lorsque vous effectuez tout type de traitement de stockage et de transfert. Dans tous ces cas, vous avez besoin que la séquence des éléments soit sortie dans le même ordre que dans votre programme, sinon les informations peuvent ne plus avoir de sens. Ainsi, vous pouvez casser votre programme dans une partie qui lit les données d'une entrée, effectue un certain traitement et les écrit dans une file d'attente et une partie qui récupère les données de la file d'attente les traite et les stocke dans une autre file d'attente pour un traitement ultérieur ou une transmission des données. .
Une pile peut être utile lorsque vous devez stocker temporairement un élément qui sera utilisé dans la ou les étapes immédiates de votre programme. Par exemple, les langages de programmation utilisent généralement une structure de pile pour passer des variables aux fonctions. Ce qu'ils font en réalité, c'est stocker (ou pousser) les arguments de la fonction dans la pile, puis passer à la fonction où ils suppriment et récupèrent (ou pop) le même nombre d'éléments de la pile. De cette façon, la taille de la pile dépend du nombre d'appels de fonctions imbriqués. De plus, une fois qu'une fonction a été appelée et a terminé ce qu'elle faisait, elle laisse la pile exactement dans le même état qu'avant son appel! De cette façon, n'importe quelle fonction peut fonctionner avec la pile en ignorant comment d'autres fonctions fonctionnent avec elle.
Enfin, vous devez savoir qu'il existe d'autres termes utilisés pour désigner les mêmes concepts similaires. Par exemple, une pile peut être appelée un tas. Il existe également des versions hybrides de ces concepts, par exemple une file d'attente à deux extrémités peut se comporter à la fois comme une pile et comme une file d'attente, car elle est accessible par les deux extrémités simultanément. De plus, le fait qu'une structure de données vous soit fournie sous forme de pile ou de file d'attente ne signifie pas nécessairement qu'elle est implémentée en tant que telle, il existe des cas dans lesquels une structure de données peut être implémentée comme n'importe quoi et être fournie en tant que structure de données simplement parce qu'elle peut se comporter comme telle. En d'autres termes, si vous fournissez une méthode push and pop à n'importe quelle structure de données, elles deviennent comme des piles!