用两个栈实现队列
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;
;
以上是关于用两个栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章