两个队列
实现栈的操作
1>将不为空的队列的数出队并入到另一个队列,直到剩下一个元素
2>将剩下的最后一个元素出队,便是实现了栈的后进先 出
3>入栈时
在两个队列都为空时,随便入到哪个队列中
不为空时入到不为空的队列中
4>这样出栈时重复之前的步骤
public static void enterStack(Queue q1,Queue q2,int val){
Queue p1 = q1;//需要入队的队列
if(q1.isEmpty()){
p1 = q2;
}
p1.push(val);
}
public static int popStack(Queue q1,Queue q2){
Queue p1 = null;//指向要出队的那个队列
Queue p2 = null;//永远指向出队后元素需要放置的队列
if(q1.isEmpty()&&q2.isEmpty()){//两个队都为空
return -1;
}
if(!q1.isEmpty()){
p1 = q1;
p2 = q2;
}
if(!q2.isEmpty()){
p1 = q2;
p2 = q1;
}
while(p1.usedSize > 1){//将出队的队列依次出队并入到另一队中,直到剩一元素
p2.push(p1.gettop());
p1.pop();
}
int num = -1;
num = p1.gettop();//得到需要出队的元素
p1.pop();//将这个唯一剩下的元素弄出去!!!!
return num;
}
![](https://i-blog.csdnimg.cn/blog_migrate/be3822a470861791902059d4ecc98133.png)