【栈与队列_2】两个栈实现一个队列

简介: 【栈与队列_2】两个栈实现一个队列

【题目】

编写一个类,用两个栈实现队列,支持队列的基本操作(and、poll、peek)

【难度】

尉 二星

【解答】

  • 栈的特点是先进后出,而队列的特点是先进先出
  • 一个栈作为压入栈,在压入数据的时候我们只往这个栈中压入,记为 stackPush
  • 一个栈作为弹出栈,在弹出数据的时候我们只从这个栈中弹出,记为 stackPop



  • 保证以下两点
1. 如果 stackPush 要往 stackPop 里面压入数据,那么必须一次性全部压入
2. 如果 stackPop  不为空,stackPush 绝对不能往 stackPop 压入数据

【代码】

class TwoStackQueue
    {
        private Stack<int> stackPush;
        private Stack<int> stackPro;
        public TwoStackQueue()
        {
            stackPush = new Stack<int>();
            stackPro = new Stack<int>();
        }
        private void pushToPop()
        {
            if (stackPro.Count == 0)
            {
                while (stackPush.Count != 0)
                {
                    stackPro.Push(stackPush.Pop());
                }
            }
        }
        public void add(int number)
        {
            stackPush.Push(number);
            pushToPop();
        }
        public int poll()
        {
            if (stackPro.Count == 0 && stackPush.Count == 0)
            {
                throw new Exception("Queue is empty");
            }
            pushToPop();
            return stackPro.Pop();
        }
        public int peek()
        {
            if (stackPro.Count == 0 && stackPush.Count == 0)
            {
                throw new Exception("Queue is empty");
            }
            pushToPop();
            return stackPro.Peek();
        }
    }


相关文章
|
4天前
|
存储 算法 调度
数据结构与算法-栈篇
数据结构与算法-栈篇
12 3
|
1天前
数据结构 栈 / 队列(第9天)
数据结构 栈 / 队列(第9天)
|
1天前
|
存储 算法 程序员
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
|
1天前
数据结构——栈和队列
数据结构——栈和队列
|
2天前
|
C语言 C++
【数据结构】C语言实现:栈(Stack)与队列(Queue)
【数据结构】C语言实现:栈(Stack)与队列(Queue)
|
4天前
|
算法 调度 Python
数据结构与算法-队列篇
数据结构与算法-队列篇
11 3
|
4天前
数据结构初阶 队列
数据结构初阶 队列
4 0
|
4天前
数据结构初阶 栈
数据结构初阶 栈
8 1
|
9天前
|
算法
数据结构和算法学习记录——栈和队列作业(实现链栈上的进栈、实现链栈上的退栈、实现链队上的入队列)
数据结构和算法学习记录——栈和队列作业(实现链栈上的进栈、实现链栈上的退栈、实现链队上的入队列)
11 0
|
12天前
|
存储 缓存 算法
【数据结构】栈和队列的模拟实现(两个方式实现)
【数据结构】栈和队列的模拟实现(两个方式实现)