用两个栈实现队列

Posted 普通网友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用两个栈实现队列相关的知识,希望对你有一定的参考价值。

题目描述

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

思路:

删除一个元素:当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出。如果stack2为空时,我们把stack1中的元素逐个弹出并压入stack2。由于先进入队列的元素被压到stack1的底部, 经过弹出和压入之后就处于stack2的顶端了,又可以直接弹出。

实现:C++

class Solution

public:
    void push(int node) 
        stack1.push(node);
    
 
    int pop() 
        if (stack2.size() <= 0)
            while (stack1.size() > 0)
                int data = stack1.top();
                stack1.pop();
                stack2.push(data);
            
        
        int head = stack2.top();
        stack2.pop();
        return head;
    
 
private:
    stack<int> stack1;
    stack<int> stack2;
;


以上是关于用两个栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章

用两个栈实现队列

双栈实现队列剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列

用两个栈实现队列的POP和PUSH操作

用两个栈实现队列-剑指Offer

题目七:用两个栈实现队列