js中利用两个栈实现队列的算法

不言
Lepaskan: 2018-07-21 10:59:51
asal
1780 orang telah melayarinya

本篇文章给大家分享的是关于js中利用两个栈实现队列的算法,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

分析

两个栈实现队列,那就是一个进一个出,且题中没说两个栈的长度限制,那么对于两个栈s1和s2来说,有两个注意的点:

  • s1.push时,若s2不为空且s1为空,为了保证正确的顺序,则将s2的元素全返入s1,然后再s1.push

  • s2.pop时,若s2为空且s1不为空,为了保证正确的顺序,则将s1的元素全放入s2,然后再s2.pop

代码实现

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();
}
Salin selepas log masuk

相关推荐:

jQuery中$()函数的使用方法

Atas ialah kandungan terperinci js中利用两个栈实现队列的算法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan