Maison  >  Article  >  interface Web  >  Algorithme pour implémenter la file d'attente en utilisant deux piles en js

Algorithme pour implémenter la file d'attente en utilisant deux piles en js

不言
不言original
2018-07-21 10:59:511729parcourir

Cet article partage avec vous l'algorithme d'utilisation de deux piles pour implémenter des files d'attente en js. Le contenu est très bon. Les amis dans le besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.

Description du problème

Utilisez deux piles pour implémenter une file d'attente et terminer les opérations Push et Pop de la file d'attente. Les éléments de la file d'attente sont de type int.

Analyse

Deux piles implémentent des files d'attente, c'est-à-dire une entrée et une sortie, et la question ne mentionne pas la limite de longueur des deux piles, alors pour le deux piles s1 Pour s2, il y a deux points à noter :

  • Quand s1.push, si s2 n'est pas vide et s1 est vide, afin de s'assurer du bon ordre , Tous les éléments de s2 sont renvoyés à s1, puis quand s1.push

  • s2.pop, si s2 est vide et s1 n'est pas vide, afin d'assurer le bon ordre, les éléments de s1 seront Mettez tous les éléments dans s2, puis s2.pop

Implémentation du code

var s1 = [], s2 = [];
function transferStack(a, b) {
    while(a.length !== 0){
        b.push(a.pop());
    }
}
function push(val) {
    if(s1.length === 0 && s2.length !== 0){
        transferStack(s2, s1);
    }

    s1.push(val);
}

function pop(){
    if(s1.length !== 0 && s2.length === 0){
        transferStack(s1, s2);
    }

    return s2.pop();
}

Recommandations associées :

Comment utiliser la fonction $() dans jQuery

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