Quelle est la différence fondamentale entre pile et file d'attente?
S'il vous plaît, aidez-moi, je ne parviens pas à trouver la différence.
Comment différenciez-vous une pile et une file d'attente?
J'ai cherché la réponse dans divers liens et j'ai trouvé cette réponse.
Dans la programmation de haut niveau,
une pile est définie comme une liste ou une séquence d'éléments qui est allongée en plaçant de nouveaux éléments "au-dessus" d'éléments existants et raccourcie en supprimant des éléments du haut des éléments existants. Il s'agit d'un ADT [Abstract Data Type] avec des opérations mathématiques de "push" et "pop".
Une file d'attente est une séquence d'éléments qui est ajoutée en plaçant le nouvel élément à l'arrière de l'existant et raccourcie en supprimant des éléments devant la file d'attente. C'est un ADT [Abstract Data Type]. Il y a plus à ces termes compris dans la programmation de Java, C ++, Python et ainsi de suite.
Puis-je avoir une réponse plus détaillée? Aidez-moi, s'il vous plaît.
Réponses:
Stack est une structure de données LIFO (dernier entré, premier sorti). Le lien associé vers wikipedia contient une description détaillée et des exemples.
La file d'attente est une structure de données FIFO (premier entré, premier sorti). Le lien associé vers wikipedia contient une description détaillée et des exemples.
la source
Imaginez une pile de papier . La dernière pièce mise dans la pile est sur le dessus, c'est donc la première à sortir. C'est LIFO . Ajouter un morceau de papier s'appelle «pousser», et retirer un morceau de papier s'appelle «éclater».
Imaginez une file d'attente au magasin . La première personne en ligne est la première personne à sortir de la ligne. C'est FIFO . Une personne qui fait la queue est «mise en file d'attente» et une personne qui sort de la file est «retirée de la file d'attente».
la source
Un modèle visuel
Pile de crêpes (LIFO)
La seule façon d'en ajouter un et / ou d'en supprimer un est d'en haut.
File d'attente de ligne (FIFO)
Quand on arrive, ils arrivent au bout de la file et quand on part, ils partent du devant de la file.
Fait amusant: les Britanniques désignent les lignes de personnes comme une file d'attente
la source
Vous pouvez considérer les deux comme une liste ordonnée de choses (triées par l'heure à laquelle elles ont été ajoutées à la liste). La principale différence entre les deux réside dans la manière dont les nouveaux éléments entrent dans la liste et les anciens éléments quittent la liste.
Pour une pile, si j'ai une liste
a, b, c
, et j'ajouted
, elle est clouée à la fin, alors je me retrouve aveca,b,c,d
. Si je veux faire apparaître un élément de la liste, je supprime le dernier élément que j'ai ajouté, qui estd
. Après un pop, ma liste est àa,b,c
nouveauPour une file d'attente, j'ajoute de nouveaux éléments de la même manière.
a,b,c
devienta,b,c,d
après l'ajoutd
. Mais, maintenant, quand je pop, je dois prendre un élément du début de la liste, donc ça devientb,c,d
.C'est très simple!
la source
Queue
La file d'attente est une collection ordonnée d'éléments.
Les éléments sont supprimés à une extrémité appelée «frontal» de la file d'attente.
Les éléments sont insérés à une autre extrémité appelée «arrière» de la file d'attente.
Le premier élément inséré est le premier à être supprimé (FIFO).
Empiler
Stack est une collection d'articles.
Il permet d'accéder à un seul élément de données: le dernier élément inséré.
Les éléments sont insérés et supprimés à une extrémité appelée «Haut de la pile».
C'est un objet dynamique et en constante évolution.
Tous les éléments de données sont placés sur le dessus de la pile et retirés du dessus
Cette structure d'accès est connue sous le nom de structure Last in First Out (LIFO)
la source
EMPILER:
QUEUE:
la source
Une pile est une collection d'éléments, qui peuvent être stockés et récupérés un par un. Les éléments sont récupérés dans l'ordre inverse de leur temps de stockage, c'est-à-dire que le dernier élément stocké est le prochain élément à récupérer. Une pile est parfois appelée structure Last-In-First-Out (LIFO) ou First-In-Last-Out (FILO). Les éléments précédemment stockés ne peuvent pas être récupérés tant que le dernier élément (généralement appelé élément «top») n'a pas été récupéré.
Une file d'attente est un ensemble d'éléments qui peuvent être stockés et récupérés un par un. Les éléments sont récupérés dans l'ordre de leur temps de stockage, c'est-à-dire que le premier élément stocké est le prochain élément à récupérer. Une file d'attente est parfois appelée structure First-In-First-Out (FIFO) ou Last-In-Last-Out (LILO). Les éléments stockés par la suite ne peuvent pas être récupérés tant que le premier élément (généralement appelé élément «avant») n'a pas été récupéré.
la source
PILE: La pile est définie comme une liste d'éléments dans laquelle on peut insérer ou supprimer des éléments uniquement en haut de la pile
La pile est utilisée pour passer des paramètres entre les fonctions. Lors d'un appel à une fonction, les paramètres et les variables locales sont stockés sur une pile.
Une pile est une collection d'éléments, qui peuvent être stockés et récupérés un par un. Les éléments sont récupérés dans l'ordre inverse de leur temps de stockage, c'est-à-dire que le dernier élément stocké est le prochain élément à récupérer. Une pile est parfois appelée structure Last-In-First-Out (LIFO) ou First-In-Last-Out (FILO). Les éléments précédemment stockés ne peuvent pas être récupérés tant que le dernier élément (généralement appelé élément «top») n'a pas été récupéré.
QUEUE:
La file d'attente est une collection du même type d'élément. Il s'agit d'une liste linéaire dans laquelle des insertions peuvent avoir lieu à une extrémité de la liste, appelée arrière de la liste, et les suppressions ne peuvent avoir lieu qu'à l'autre extrémité, appelée le début de la liste
Une file d'attente est un ensemble d'éléments qui peuvent être stockés et récupérés un par un. Les éléments sont récupérés dans l'ordre de leur temps de stockage, c'est-à-dire que le premier élément stocké est le prochain élément à récupérer. Une file d'attente est parfois appelée structure First-In-First-Out (FIFO) ou Last-In-Last-Out (LILO). Les éléments stockés par la suite ne peuvent pas être récupérés tant que le premier élément (généralement appelé élément «avant») n'a pas été récupéré.
la source
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
avec une file d'attente
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!
la source
STACK est une liste LIFO (dernier entré, premier sorti). les moyens supposent que 3 éléments sont insérés dans la pile, soit 10,20,30. 10 est inséré en premier et 30 est inséré en dernier, donc 30 est d'abord supprimé de la pile et 10 est supprimé en dernier de la pile. C'est une liste LIFO (dernier entré, premier sorti).
QUEUE est une liste FIFO (First In First Out). Signifie qu'un élément est inséré en premier qui doit être supprimé first.eg file d'attente de personnes.
la source
Empile un considéré comme une collection verticale. Comprenez d'abord qu'une collection est un OBJET qui rassemble et organise d'autres OBJETS plus petits. Ces OBJETS plus petits sont communément appelés éléments. Ces éléments sont «poussés» sur la pile dans un ordre ABC où A est le premier et C est le dernier. verticalement cela ressemblerait à ceci: 3ème élément ajouté) C 2ème élément ajouté) B 1er élément ajouté) A
Notez que le "A" qui a été ajouté en premier à la pile est en bas. Si vous voulez supprimer le "A" de la pile, vous devez d'abord supprimer "C", puis "B", et enfin votre élément cible "A". La pile nécessite une approche LIFO tout en traitant les complexités d'une pile. (Last In First Out) Lors de la suppression d'un élément d'une pile, la syntaxe correcte est pop. nous ne supprimons pas un élément d'une pile, nous le «sautons».
Rappelez-vous que "A" était le premier élément poussé sur la pile et "C" était le dernier élément poussé sur la pile. Si vous décidez que vous souhaitez voir ce qui se trouve en bas de la pile, étant donné que les 3 éléments sont sur la pile, A étant le premier B étant le deuxième et C étant le troisième élément, le haut devrait être enlevé puis le deuxième élément ajouté afin de visualiser le bas de la pile.
la source