利用队列实现栈

Posted moris5013

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用队列实现栈相关的知识,希望对你有一定的参考价值。

java中的队列LinkedList是动态数组实现的,这里利用两个队列来实现栈

public class MyStack 

    private Queue<Integer> data;
    private Queue<Integer> help;

    public MyStack() 
        data = new LinkedList<Integer>();
        help = new LinkedList<Integer>();
    

    public void push(int pushInt) 
        data.add(pushInt);
    

    public int peek() 
        if (data.isEmpty()) 
            throw new RuntimeException("Stack is empty!");
        
        while (data.size() != 1) 
            help.add(data.poll());
        
        int res = data.poll();
        // 与poll相比,重新追加到队尾中去
        help.add(res);
        swap();
        return res;
    

    public int pop() 
        if (data.isEmpty()) 
            throw new RuntimeException("Stack is empty!");
        
        while (data.size() > 1) 
            help.add(data.poll());
        
        int res = data.poll();
        swap();
        return res;
    

    private void swap() 
        Queue<Integer> tmp = help;
        help = data;
        data = tmp;
    

 

以上是关于利用队列实现栈的主要内容,如果未能解决你的问题,请参考以下文章

利用递归实现 两个队列实现一个栈的教程 写的超级详细小白都能看懂!

剑指Offer 09.用两个栈实现队列

Leetcode快速入门之第六节课: 利用栈和队列实现树的遍历(前序中序后序层次)

算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。《剑指offer》

手把手带你利用栈来实现一个简易版本的计算器

手把手带你利用栈来实现一个简易版本的计算器