Heim  >  Artikel  >  Web-Frontend  >  Algorithmus zur Implementierung einer Warteschlange mithilfe von zwei Stapeln in js

Algorithmus zur Implementierung einer Warteschlange mithilfe von zwei Stapeln in js

不言
不言Original
2018-07-21 10:59:511783Durchsuche

Dieser Artikel teilt Ihnen den Algorithmus zur Verwendung von zwei Stapeln zur Implementierung von Warteschlangen in js mit. Der Inhalt ist sehr gut. Ich hoffe, er kann allen helfen.

Problembeschreibung

Verwenden Sie zwei Stapel, um eine Warteschlange zu implementieren und die Push- und Pop-Vorgänge der Warteschlange abzuschließen. Die Elemente in der Warteschlange sind vom Typ int.

Analyse

Zwei Stapel implementieren Warteschlangen, das heißt, einer rein und einer raus, und in der Frage wird die Längenbeschränkung der beiden Stapel nicht erwähnt zwei Stapel s1 Für s2 sind zwei Punkte zu beachten:

  • Wenn s1.push, wenn s2 nicht leer und s1 leer ist, um die richtige Reihenfolge sicherzustellen , Alle Elemente von s2 werden an s1 zurückgegeben und dann an s1.push

  • s2.pop Wenn s2 leer ist und s1 nicht leer ist, wird die Elemente von s1 werden alle Elemente in s2 einfügen und dann s2.pop

Code-Implementierung

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();
}

Verwandte Empfehlungen:

So verwenden Sie die Funktion $() in jQuery

Das obige ist der detaillierte Inhalt vonAlgorithmus zur Implementierung einer Warteschlange mithilfe von zwei Stapeln in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn