web-dev-qa-db-fra.com

quelle est la différence fondamentale entre pile et file d'attente?

Quelle est la différence fondamentale entre pile et file d'attente?

S'il vous plaît, aidez-moi, je suis incapable de 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.

En programmation de haut niveau,

une pile est définie comme une liste ou une séquence d'éléments allongée en plaçant les nouveaux éléments "au-dessus" des éléments existants et raccourcie en supprimant les éléments situés en haut des éléments existants. C'est un ADT [type de données abstrait] avec les opérations mathématiques "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 situés en avant de la file d'attente. C'est un ADT [type de données abstrait]. Il y a plus à ces termes compris dans la programmation de Java, C++, Python, etc.

Puis-je avoir une réponse plus détaillée? Aidez-moi, s'il vous plaît.

111
Harish Rachakonda

Stack est une structure de données LIFO (dernier entré premier sorti). Le lien associé à wikipedia contient une description détaillée et des exemples.

Queue est une structure de données FIFO (premier entré premier sorti). Le lien associé à wikipedia contient une description détaillée et des exemples.

135
jhonkola

Imaginez un 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 un faire la queue au magasin. La première personne en ligne est la première personne à sortir de la ligne. C'est FIFO. Une personne entrant dans la file est «mise en file d'attente» et une personne sortant d'une ligne est «mise en file d'attente».

 

94
123

Un modèle visuel

PancakeStack (LIFO)

La seule façon d'en ajouter et/ou d'en supprimer un est d'en haut.

 pancake stack

LigneFile d'attente (FIFO)

Quand on arrive, ils arrivent au bout de la file d'attente et quand on part, ils partent devant. 

 dmv line

Fait amusant: les Britanniques se réfèrent à des lignes de personnes comme un File d'attente

56
Jacksonkr

Vous pouvez considérer les deux comme une liste ordonnée de choses (classées par le moment où elles ont été ajoutées à la liste). La principale différence entre les deux est la façon 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 que j'ajoute d, elle est ajoutée à la fin, donc je me retrouve avec a,b,c,d. Si je veux faire apparaître un élément de la liste, je supprime le dernier élément ajouté, à savoir d. Après un pop, ma liste est maintenant a,b,c à nouveau

Pour une file d'attente, j'ajoute de nouveaux éléments de la même manière. a,b,c devient a,b,c,d après avoir ajouté d. Mais, maintenant, quand je saute, je dois prendre un élément au début de la liste pour qu'il devienne b,c,d

C'est très simple!

35
cdesrosiers

File d'attente

La file d'attente est une collection ordonnée d'éléments.

Les éléments sont supprimés à une extrémité, appelée ‘front’ end.

Les articles sont insérés à l’autre extrémité appelée «arrière» de la file d’attente.

Le premier élément inséré est le premier à être supprimé (FIFO).

Pile

Stack est une collection d'objets.

Il permet l'accès à 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 "Top of the stack".

C'est un objet dynamique et en constante évolution.

Toutes les données sont placées en haut de la pile et retirées du sommet.

Cette structure d'accès est connue sous le nom de structure «dernier entré, premier sorti» (LIFO)

14
Dissanayake

STACK:

  1. La pile est définie comme une liste d'éléments dans laquelle nous pouvons insérer ou supprimer des éléments uniquement en haut de la pile.
  2. Le comportement d'une pile est semblable à un système LIFO (Last-In First-Out).
  3. 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 dans une pile.
  4. Les langages de programmation de haut niveau tels que Pascal, c, etc. prenant en charge la récursivité utilisent la pile pour la comptabilité. N'oubliez pas que dans chaque appel récursif, il est nécessaire de sauvegarder la valeur actuelle des paramètres, des variables locales et l'adresse de retour (l'adresse à laquelle le contrôle doit retourner après l'appel).

QUEUE:

  1. La file d'attente est une collection du même type d'élément. C'est une liste linéaire dans laquelle les insertions peuvent avoir lieu à une extrémité de la liste, appelée rear de la liste, et les suppressions ne peuvent avoir lieu qu'à une autre extrémité, appelée le avant de la liste
  2. Le comportement d'une file d'attente est semblable à celui d'un système FIFO (First-In-First-Out).
13
ASHUTOSH KUMAR

Une pile est un ensemble d'éléments pouvant être stockés et récupérés un à un. Les éléments sont récupérés dans l'ordre inverse de leur durée de stockage, c'est-à-dire que le dernier élément stocké est l'élément suivant à 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 pouvant être stockés et récupérés un à un. Les éléments sont récupérés dans l’ordre de leur temps d’enregistrement, c’est-à-dire que le premier élément stocké est l’élément suivant à extraire. Une file d'attente est parfois appelée structure FIFO (First-In-First-Out) ou LILO (Last-In-Last-Out). Les éléments stockés ultérieurement ne peuvent pas être récupérés tant que le premier élément (généralement appelé élément 'front') n'a pas été récupéré.

5
Saurabh R S

Pour essayer de simplifier à outrance la description d’une pile et d’une file d’attente, Ce sont deux chaînes d’éléments d’information dynamiques auxquelles on peut accéder à partir d’une extrémité de la chaîne et dont la seule différence est le fait que:

quand on travaille 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

tout en faisant la queue

  • vous insérez des éléments à une extrémité de la chaîne et
  • vous récupérez/retirez-les de l'autre extrémité

NOTE: J'utilise le libellé abstrait "extraire/supprime" dans ce contexte car il existe des cas où vous extrayez simplement l'élément de la chaîne ou, dans un sens, lisez-le ou accédez à sa valeur, mais il y a aussi des cas où vous supprimez l'élément de la chaîne et enfin, il y a des cas où vous effectuez les deux actions avec le même appel.

De plus, l'élément Word est utilisé à dessein afin d'abstraire le plus possible la chaîne imaginaire et de la dissocier du langage de programmation spécifique termes. 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 le langage.

Dans la plupart des cas, il s’agit en réalité d’une valeur ou d’un emplacement de mémoire (c’est-à-dire un pointeur). Et le reste ne fait que cacher ce fait derrière le jargon linguistique <

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 ont été introduits pour la première fois dans votre programme. Par exemple, lorsque vous traitez un flux audio ou lorsque vous mettez des données réseau en mémoire tampon. Ou quand vous faites n'importe quel type de magasin et transférez le traitement. Dans tous ces cas, vous avez besoin que la séquence des éléments soit sortie dans le même ordre qu'au moment où ils sont entrés dans votre programme, sinon les informations risquent de ne plus avoir de sens. Ainsi, vous pourriez diviser votre programme en une partie qui lit les données d'une entrée, effectue un traitement et les écrit dans une file d'attente, et une partie qui récupère des données de la file d'attente les traite et les stocke dans une autre file d'attente pour un traitement ou une transmission plus poussé. .

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 transmettre des variables à des 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 retirent et récupèrent (ou sautent) 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 imbriqués de fonctions. De plus, après qu'une fonction ait été appelée et finie sa tâche, elle laisse la pile exactement dans le même état qu'avant l'appel! Ainsi, n'importe quelle fonction peut fonctionner avec la pile en ignorant la manière dont les autres fonctions fonctionnent avec elle.

Enfin, vous devez savoir qu’il existe d’autres termes utilisés pour désigner des concepts similaires. Par exemple, une pile pourrait ê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 simultanément par les deux extrémités. 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 de manière quelconque et fournie comme un élément spécifique structure de données simplement parce qu'il peut être fait pour se comporter comme tel. En d'autres termes, si vous fournissez une méthode Push et Pop à n'importe quelle structure de données, elles deviennent comme des piles! 

1
Agelos Assonitis

STACK: Stack est défini comme une liste d’éléments dans lesquels nous pouvons 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 dans une pile.

Une pile est un ensemble d'éléments pouvant être stockés et récupérés un à un. Les éléments sont récupérés dans l'ordre inverse de leur durée de stockage, c'est-à-dire que le dernier élément stocké est l'élément suivant à 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 les insertions peuvent avoir lieu à une extrémité de la liste, appelée à l'arrière de la liste, et les suppressions ne peuvent avoir lieu qu'à l'autre extrémité, appelée à l'avant de la liste.

Une file d'attente est un ensemble d'éléments pouvant être stockés et récupérés un à un. Les éléments sont récupérés dans l’ordre de leur temps d’enregistrement, c’est-à-dire que le premier élément stocké est l’élément suivant à extraire. Une file d'attente est parfois appelée structure FIFO (First-In-First-Out) ou LILO (Last-In-Last-Out). Les éléments stockés ultérieurement ne peuvent pas être récupérés tant que le premier élément (généralement appelé élément 'front') n'a pas été récupéré.

1
shashimani

Stacks a considéré comme une collection verticale. Tout d'abord, comprenez 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 A B C où A est le premier et C le dernier. verticalement cela ressemblerait à ceci: 3ème élément ajouté) C 2e élément ajouté) B 1er élément ajouté) A

Notez que le "A" qui a été ajouté à la pile est en bas. Si vous souhaitez supprimer le "A" de la pile, vous devez d'abord supprimer "C", puis "B" et enfin votre élément cible "A". La pile requiert une approche LIFO tout en traitant les complexités d'une pile. (Dernier entré, premier sorti) Lorsque vous supprimez un élément d'une pile, la syntaxe correcte est pop. nous ne supprimons pas un élément d'une pile, nous le "démontons".

Rappelons que "A" était le premier élément poussé dans la pile et que "C" était le dernier élément poussé dans la pile. Si vous décidez que vous voulez voir ce qui se trouve en bas de la pile, étant donné que les 3 éléments sont sur la pile, le premier ordre étant le second B et le troisième élément en C, deuxième élément ajouté afin de voir le bas de la pile.

0
Zimmermen7