0
点赞
收藏
分享

微信扫一扫

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

兮城 2022-01-10 阅读 32
c#unity

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 条评论