如何用栈模拟队列

该博客介绍了如何利用两个栈来模拟队列的操作,包括入队(push)和出队(pop)。通过将栈的特点与队列的操作相结合,当出队时,如果出队栈为空,则将入队栈的所有元素转移到出队栈,然后从出队栈顶部弹出元素,以达到“先进先出”的效果。这种方法巧妙地解决了栈和队列特性不同的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用栈模拟队列的push()和pop()方法:
栈的特点时”先进后出”,而队列的特点是“先进先出”。、
思路
找一个栈来存放入队的操作,再找一个栈用来出队,如果当前的出队栈不是空的,那我们就先出出栈队的,但如果出栈队是空的,那么就先将入栈队的数据压入到出栈队中,再从出栈队的顶部开始输出数据。
模拟入队
模拟出队
代码实现:
//栈模拟队列

class MyQueue<E>{
    prinvate Stack<E> in = new Stack<E>();
    private Stack<E> out = new Stack<E>();
//判断队列是否为空
public boolean isEmpty(){
        return in.size() == 0&& (out.size()==0);
        }
//入队
public void offer(E e){
     while(!out.empty()){
     in.push(out.pop());}
//入栈
  in.push(e);}
//出队
public E poll(){
while(!in.empty()){
    out.push(in.pop());
    }
    return out.pop();
      }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值