美文网首页
由两个栈组成的队列

由两个栈组成的队列

作者: 永志 | 来源:发表于2016-07-11 22:25 被阅读0次

题目

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

要求

思路

使用两个栈,栈A用于add,栈B用于poll和peek,add的时候,往栈A中push元素,poll时,如果栈B不是空,则弹出最顶元素,如果为空则将栈A的所有元素pop,然后push到栈B中。这样就可以实现队列的功能了。

代码

package com.github.zhanyongzhi.interview.algorithm.stacklist;

import java.util.Stack;

/**
 * 用两个栈实现队列
 * @author zhanyongzhi
 */
public class TwoStackQueue<T> {
    private Stack<T> pushStack = new Stack<T>();
    private Stack<T> popStack = new Stack<T>();

    public T add(T item){
        pushStack.push(item);
        return item;
    }

    public T poll(){
        if(popStack.empty()){
            moveStack();
        }

        if(!popStack.empty())
            return popStack.pop();

        return null;
    }

    public T peek(){
        if(popStack.empty()){
            moveStack();
        }

        if(!popStack.empty())
            return popStack.peek();

        return null;
    }

    private void moveStack(){
        int count = pushStack.size();
        for(int i=0; i<count; i++){
            T item = pushStack.pop();
            popStack.push(item);
        }
    }
}

在github中查看

相关文章

  • 由两个栈组成的队列

    2.由两个栈组成的队列 题目: 解题:

  • 由两个栈组成的队列

    题目 编写一个类,用两个栈实现队列,支持队列的基本操作(add, poll, peek) 要求 无 思路 使用两个...

  • 由两个栈组成的队列

    【题目】编写一个类,用两个栈实现一个类,支持队列的基本操作(add、poll、peek)。 【要求】要求即题目。 ...

  • 由两个栈组成的队列

    题目描述 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek) 问题解答 要实现队列的先...

  • 【算法题】由两个栈组成的队列

    编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。 解题思路 为了实现栈后进先出的特...

  • 栈&队列

    一、栈&队列总结 栈/队列的应用接雨水验证栈序列滑动窗口的最大值 栈/队列的特殊实现用两个栈实现队列用两个队列实现...

  • 栈和队列

    两个栈实现队列 两个队列实现栈

  • 栈和队列的相互实现

    两个栈实现队列: 一个栈用来入,一个栈用来出 两个队列实现栈: 入栈的时候正常存入一个队列,出栈的时候用另一个队列...

  • 成长(10/2000)——面试题合集7

    事件循环机制event-loop 事件循环机制由三部分组成:调用栈、消息队列和微任务队列。 event-loop开...

  • 队列、栈

    两个队列实现一个栈 两个栈实现一个队列

网友评论

      本文标题:由两个栈组成的队列

      本文链接:https://www.haomeiwen.com/subject/itpjjttx.html