力扣【225】用队列实现栈

题目:

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。

实现 MyStack 类:

void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

题解:

package test;

import java.util.LinkedList;
import java.util.Queue;

class Solution {
    Queue<Integer> queue;

    /**
     * Initialize your data structure here.
     */
    public void MyStack() {
        queue = new LinkedList<>();
    }

    /**
     * Push element x onto stack.
     */
    public void push(int x) {
        int size = queue.size();
        queue.offer(x);
        for (int i = 0; i < size; i++) {
            queue.offer(queue.poll());
        }
    }

    /**
     * Removes the element on top of the stack and returns that element.
     */
    public int pop() {
        return queue.poll();
    }

    /**
     * Get the top element.
     */
    public int top() {
        return queue.peek();
    }

    /**
     * Returns whether the stack is empty.
     */
    public boolean empty() {
        return queue.isEmpty();
    }
}

public class Main {
    public static void main(String[] args) {
        Solution p = new Solution();
        p.MyStack();
        p.push(1);
        p.push(2);
        p.push(3);
        p.push(4);
        for (int i = 0; i < 4; i++) {
            System.out.print("结果:" + p.pop());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq1922631820/article/details/114680048