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

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

思路:栈的特点是先进后出,队列的特点是先进先出。要想让入栈的顺序变成队列的先进先出,可以先将数据push进一个栈,都push完了之后就出栈,用另一个栈来接收,再出栈。顺序即可变成先进先出。

解法:

import java.util.Stack;

public class Solution {

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

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

    public void push(int node) {

        stack1.push(node);    进队的时候直接采用一个栈来实现,调用push方法。

    }

    public int pop(){

         //出栈的时候先判断两个栈是否都是空,如果都是空,抛出异常。

         //接下来直接判断栈2是否为空,满足该条件下写一个while循环,循环条件是stack1不为空

        //stack2进栈

        //最后要输出序列,直接return stack2.pop

        if(stack1.empty()    &&   stack2.empty()){

            throw new RuntimeException("Queue is empty!");

        }

        if(stack2.empty()){

            while(!stack1.empty()){

                stack2.push(stack1.pop());

            }

        }

    return stack2.pop();

    }

}

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