参考回答:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if(stack2.size()!=0){
int tmp = stack2.top();
stack2.pop();
return tmp;
}
else{
while(stack1.size()!=0){
int tmp = stack1.top();
stack1.pop();
stack2.push(tmp);
}
return pop();
}
}
private:
stack<int> stack1;
stack<int> stack2;
};
题目链接 牛客网 题目描述 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 解题思路 in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 // java Stac
一、题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 二、解题思路 栈1用于存储元素,栈2用于弹出元素,负负得正。 说的通俗一点,现在把数据1、2、3分别入栈一,然后从栈一中出来(3、2、1),放到栈二中,那么,从栈二中出来的数据(1、2、3)就符合队列的规律了,即负负得正。 三、解题
为什么我的代码在运行时会被粉碎。它表示在Push()函数中传递不兼容的指针类型。如何解决这个问题? 下面是我用C语言实现的代码。下面是我如何尝试解决这个问题的简要总结。 >
本文向大家介绍手写代码:合并两个排序数组相关面试题,主要包含被问及手写代码:合并两个排序数组时的应答技巧和注意事项,需要的朋友参考一下 参考回答:
本文向大家介绍手写代码:合并两个有序数组相关面试题,主要包含被问及手写代码:合并两个有序数组时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 解法一: int num[m+n];//新建一个数组,对nums1和nums2排序,排完序赋值给nums1 解法二: 解法三:直接在nums1里进行操作,从nums1的尾部开始,取nums1和nums2中的最大值放入其中。如果n先到达0就能直接得到
本文向大家介绍用两个栈实现一个队列的功能?要求给出算法和思路!相关面试题,主要包含被问及用两个栈实现一个队列的功能?要求给出算法和思路!时的应答技巧和注意事项,需要的朋友参考一下 设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B 是否为空; (2)如果不为空,则将栈A中所有元素依次pop 出并push到栈B; (3)将栈B 的栈顶元素pop 出;