欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

232. 用栈实现队列

程序员文章站 2022-07-11 08:22:19
...

用栈实现队列

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

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

示例:

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);  
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

思路+代码+注释:

private Stack<Integer> stack;
    public TwoThreeTwo() {
        stack=new Stack<>();
    }

    /** Push element x to the back of queue. */
    public void push(int x) {
        stack.add(x);
    }

    /** Removes the element from in front of queue and returns that element. */
    public int pop() {
        /*
        弹出栈中的元素,直到倒数第二个元素,将弹出的元素记录到list中,记录弹出的最后一个元素,然后将list中的元素从后往前重新加入到栈中,返回最后一个元素
         */
        List<Integer> nums=new ArrayList<>();
        while (stack.size()>1)
        {
            nums.add(stack.pop());
        }
        Integer returnNum=stack.pop();
        for (int i = nums.size()-1; i > -1; i--) {
            stack.add(nums.get(i));
        }
        return returnNum;
    }

    /** Get the front element. */
    public int peek() {
        List<Integer> nums=new ArrayList<>();
        int res=0;
        while (stack.size()>0)
        {
            int num=stack.pop();
            nums.add(num);
            if (stack.size()==0)
            {
                res=num;
            }
        }
        for (int i = nums.size()-1; i > -1; i--) {
            stack.add(nums.get(i));
        }
        return res;
    }

    /** Returns whether the queue is empty. */
    public boolean empty() {
            return stack.empty();
    }
相关标签: 用栈实现队列

上一篇: 摸金

下一篇: 函数