NC76 用两个栈实现队列

1.类型:栈

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

3.思路

栈:后进先出
队列:先进先出
用两个栈实现队列,大概意思就是,12345顺序输入,pop输出也应该是12345。
那么s1,s2两个栈,s1顺序push入栈 12345,然后把s1中pop出去(需要循环)的数据s2入栈54321,最后把s2的元素全部出栈就会是12345.

考虑:如果pop和push操作不是连续的话怎么办呢?那么就需要在s2push前判断是否为空,如果不为空。就先pop s2内存在的元素;如果为空,再将s1的元素依次pop 再push再pop。

4.代码

自己改写的:

let stack1 = [], stack2 = [];

function push(node)
{
    // write code here
    stack1.push(node);
}
function pop()
{
    // write code here
    if(stack2.length != 0) {
        return stack2.pop()
    } else {
        while(stack1.length) {
            stack2.push(stack1.pop())
        }
        return stack2.pop()
    }
}

参照(上面的简化 只用了一个return):

let stack1 = [], stack2 = [];

function push(node)
{
    // write code here
    stack1.push(node);
}
function pop()
{
    // write code here
    if(!stack2.length) {
        while(stack1.length) {
            stack2.push(stack1.pop())
        }
    }
    return stack2.pop()
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原题链接 用两个栈实现队列 题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int...
    storm_lincoln阅读 227评论 0 0
  • 题目描述用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。算是剑指offer的基中的基础题吧解题思路...
    玄林阅读 114评论 0 0
  • 题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 队列:先进先出。栈...
    小碧小琳阅读 217评论 0 1
  • 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 基本思想 两个栈s...
    毛毛毛毛毛豆阅读 112评论 0 0
  • 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型 设置两个栈s1,s2进栈只进s...
    Crazy_Bear阅读 95评论 0 0