用两个栈实现队列(牛客)

思路:

栈的特点是先入后出,队列的特点是先进先出。

所以一个栈干不了队列的活,可以借助两个栈,一个栈负责队列的入队,一个栈负责队列的出栈操作。

队列的入队,用 栈 A 的 push()操作就可以了。

队列的出队,通过把栈A 的元素全部压入栈 B 中,再进行B 栈的 出栈操作,即入栈的时候,B栈要为空。其他时候,也就是B栈 弹出元素的时候,A 栈要为空。

这里的空判断用 size() 方法判断。


代码:

public class Solution {

    Stack<Integer> stack1 = new Stack<Integer>();

    Stack<Integer> stack2 = new Stack<Integer>();


    public void push(int node) {

        stack1.push(node);

    }


    public int pop(){

        if(stack2.size()<=0){

            while(stack1.size()!=0){

            stack2.push(stack1.pop());

        }   

    }

        return stack2.pop();

  }


}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容