【无标题】两个栈形成一个队列,实时无序输入输出

C# 实现两个栈输出为安全的队列方式,需要实时push和pull ,保证队列正确性。。。。后续有时间补上多线程

两个栈形成一个队列

根据我们所知的知识,
栈:先进后出
队列:先进先出

实现一个队列很简单,只需要把数据按顺序从一个栈,输入到另一个栈再输出,就是一个队列

考虑到需要实时输入和输出,这样做是有问题的

https://blog.csdn.net/ly1196324806/article/details/107945439

比如这位的给出的问题的,但是代码不对,试试就知道出错了。




public class MyQueue
{
  stack <int> input;//输入
  stack <int> output;//输入
  public void Push(int val)
  {
    input.push(val);
  }
  public int Pull()
  {
    if(output.empty())
    {
      while(!input.empty())
      {
        output.push(input.pop());
      }      
    }
      return output.pop(); 
  }
}
//在Unity中测试
class MyProgram:Monobehive
{
  MyQueue myQ=new MyQueue();//实例化自定义队列
  void Updata()
  {
    if(Input.GetKeyDown(KeyCode.Q))
    {
      myQ.push(Input.GetNum());//Input.GetNum()自定义方法获取当前输入值      
    }
     if(Input.GetKeyDown(KeyCode.W))
    {
      Debug.Log( myQ.pull());//通过Debug.Log输出
    }
   
  }
}

该方法可以实时push和pull ,不会出现多次push 载pull 出现顺序错乱

今天面试出了这个题目,感觉很简单,但是现场却没发现问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值