程序员

用栈实现队列-leetcode

2018-11-30  本文已影响4人  胡子先生丶
题目描述

使用栈实现队列的下列操作:

push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。

:先进后出;
队列:先进先出;

思路:
1.使用两个栈stack 、queue ;
2.将数据push到stack中;
3.queue 进行出队,则是stack中出栈,如果queue无数据则stack就行出栈,如果queue 有数据就进行出栈;

 Stack<int> stack = new Stack<int>();
        Stack<int> queue = new Stack<int>();

        public MyQueue()
        {
        }

        public void Push(int x)
        {
            stack.push(x);
        }

        public int Pop()
        {
            if (queue.isEmpty())
            {
                while (stack.top != null)
                {
                    queue.push(stack.peek());
                    stack.pop();
                }                
            }
            int topV = queue.peek();
            queue.pop();
            return topV;
        }

        /** Get the front element. */
        public int Peek()
        {
            if (queue.isEmpty())
            {
                while (stack.top != null)
                {
                    queue.push(stack.peek());
                    stack.pop();
                }
            }
            return queue.peek();
        }

        /** Returns whether the queue is empty. */
        public bool Empty()
        {
            if (queue.isEmpty())
            {
                while (stack.top != null)
                {
                    queue.push(stack.peek());
                    stack.pop();
                }
            }
            if (queue.top == null) return false;
            return true;
        }

上一篇下一篇

猜你喜欢

热点阅读