recherche
Maisondéveloppement back-endTutoriel PythonImplémentation de la file d'attente à l'aide de Stack

La file d'attente et la pile sont des structures de données assez simples que nous utilisons dans notre codage quotidien. En fait, elles peuvent être considérées comme les structures les plus simples pour gérer les données.

Tout au long de l'article, j'utiliserai DS pour faire référence à la structure des données.

Queue est un DS qui fonctionne sur le principe FIFO. Les données qui arrivent en premier sont autorisées à sortir en premier. Il existe de nombreuses façons de mettre en œuvre des files d'attente. Nous sommes libres d'utiliser des tableaux, des listes chaînées et bien d'autres. Mais ici, je suis sur le point de discuter de l'implémentation de Queue en utilisant un autre DS appelé Stack.

Maintenant, nous le savons tous, Stack est une DS qui fonctionne sur le principe LIFO. Je pense toujours à empiler les livres les uns sur les autres, alors n'hésitez pas à utiliser cette analogie si cela vous aide à visualiser.

Je suis tombé sur cette question dans hackerrank où ils nous demandaient d'implémenter Queue en utilisant 2 Stacks. Cela semble simple, n'est-ce pas ? Prenez un moment pour réfléchir à la manière dont nous pourrions y parvenir.

Vous avez peut-être trouvé des solutions car il existe de nombreuses façons de procéder. Alors pourquoi ne pas l'essayer directement ?

Question

Maintenant, pour ceux qui ont essayé et obtenu une "erreur de temps mort" et pour ceux qui n'ont pas pris la peine d'essayer, laissez-moi vous expliquer la solution la plus simple et la plus facile à ce problème.

Jetez d’abord un œil à la façon dont la pile peut être implémentée.

Implementing Queue using Stack

Comme vous pouvez le voir, j'ai implémenté une pile à l'aide d'une liste. Initialement, le constructeur initialise une liste vide. Nous poussons les données en les ajoutant à la fin de la liste. Lors de l'affichage, si nous ne fournissons pas d'index, il apparaît à la fin de la liste. Ainsi, le dernier élément à insérer est le premier à être retiré.

Maintenant, de la même manière pour la file d'attente, nous avons initialisé deux piles différentes. Un pour la mise en file d'attente et un pour la sortie de la file d'attente.

Nous utilisons enqueueStack similaire à la pile uniquement pour pousser les données à la fin de la liste. Mais pour dequeueStack, nous savons que la fonction pop de stack supprime l'élément du dernier, donc ce que nous faisons est : nous inverseons l'enqueueStack et le mettons dans dequeueStack. Ainsi, le premier élément de enqueueStack devient le dernier élément de dequeueStack, le deuxième de enqueueStack devient l'avant-dernier de dequeueStack et ainsi de suite. Alors maintenant, si nous utilisons la fonction pop pour dequeueStack, elle supprimera le premier élément que nous avons poussé, imitant ainsi la file d'attente.

Ne vous inquiétez pas si cela vous semble déroutant en ce moment ! Une fois que vous aurez vu le code, vous comprendrez de quoi je parle. En fait, jetez-y un œil dès maintenant !

Implementing Queue using Stack

Vous vous demandez peut-être à quoi servent ces contrôles supplémentaires. Comme vérifier si le dequeueStack est vide ou non. Si nous ne le vérifions pas initialement. Les éléments de enqueueStack par inversion resteront dans le dequeueStack et ce qui se passe, c'est que l'élément dequeue Stacks qui était censé être activé en premier finit maintenant par être le dernier. Donc, dequeueStack doit d’abord être vidé comme indiqué dans le code.

De la même manière, printFront imprime l'élément qui est censé être en début de file d'attente.

Après cette implémentation, nous lisons les entrées de STDIN et imprimons la sortie sur STDOUT.

Notre contribution ressemble un peu à ceci :

Implementing Queue using Stack

Et la fonction principale complète est :

Implementing Queue using Stack

J'ai essayé de mettre en œuvre cela de la manière la plus simple possible. Il pourrait y avoir plusieurs autres et meilleures façons de mettre en œuvre cela. L'un d'eux est présenté ici !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Approche hybride de Python: compilation et interprétation combinéesApproche hybride de Python: compilation et interprétation combinéesMay 08, 2025 am 12:16 AM

Pythonusesahybridapproach, combinantcompilationToByteDodeAnd Intrepretation.1) CodeSompiledToplatForment-indépendantBytecode.2) ByteCodeisInterpretedByThepyThonVirtualmachine, améliorant la performance et la portabilité.

Apprenez les différences entre les 'pour' de PythonApprenez les différences entre les 'pour' de PythonMay 08, 2025 am 12:11 AM

Thekeydifferencesbetweenpython "pour" et "tandis que" Loopsare: 1) "pour" LoopsareIdEalForitatriant sur les séquences ouvraires, tandis que 2) "tandis que" LoopsarebetterforcontinUnUntilaconditionMetStwithoutPredefinedIberations.un.un

Python concaténate répertorie avec des doublonsPython concaténate répertorie avec des doublonsMay 08, 2025 am 12:09 AM

Dans Python, vous pouvez connecter des listes et gérer des éléments en double via une variété de méthodes: 1) Utiliser les opérateurs ou prolonger () pour conserver tous les éléments en double; 2) Convertissez en ensembles puis revenez aux listes pour supprimer tous les éléments en double, mais l'ordre d'origine sera perdu; 3) Utilisez des boucles ou des compréhensions de liste pour combiner des ensembles pour supprimer les éléments en double et maintenir l'ordre d'origine.

Python Liste de la liste des performances de concaténation: comparaison de la vitessePython Liste de la liste des performances de concaténation: comparaison de la vitesseMay 08, 2025 am 12:09 AM

ThefastestmethodforlistCaténationInpyThonDePendSonListSize: 1) forsmalllists, the opératorisefficient.2) Forlargerlists, list.extend () orlistcomprehensionsisfaster, witextend () étant lamememory-efficientBymoditifyListListsin-Lace.

Comment insérer des éléments dans une liste de python?Comment insérer des éléments dans une liste de python?May 08, 2025 am 12:07 AM

ToinsertElementsIntoapyThonList, useAppend () toaddtotheend, insert () foraspecificPosition, andExtend () forulTipleElements.1) useAppend () foraddingsingleitemStotheend.2) useinsert () toaddataspecificIndex, wila'slowerLlowerLarleLis

Les listes Python sont-elles des tableaux dynamiques ou des listes liées sous le capot?Les listes Python sont-elles des tableaux dynamiques ou des listes liées sous le capot?May 07, 2025 am 12:16 AM

Pythonlistsareimpoledasdynamicarrays, notLinkedlists.1) ils sont les plus utiles.

Comment supprimer les éléments d'une liste Python?Comment supprimer les éléments d'une liste Python?May 07, 2025 am 12:15 AM

PythonoffersfourmainMethodstoreMoElelementsfromalist: 1) retirez (valeur) supprimer la perception de la réavance, 2) la pop (index) supprimera-theredraturnsanelementAsaspecifiedIndex, 3) DelstatementRemoveselementsbyIndexor

Que devez-vous vérifier si vous obtenez une erreur 'Autorisation refusée' lorsque vous essayez d'exécuter un script?Que devez-vous vérifier si vous obtenez une erreur 'Autorisation refusée' lorsque vous essayez d'exécuter un script?May 07, 2025 am 12:12 AM

Toresolvea "Permissiondened" Erreur lorsqu'il a fait la recherche de suivi de suivi: 1) CheckAndAdAdAstheScript'sperMissionsusingChmod xmyscript.shtomakeitexecuable.2) s'assureraScriptisloatedInaDirectorywherewheyouHavewritePerMissions, telasyourhomedirectory.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser