剑指Offer----用两个栈实现队列(java实现)

题目:

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

import java.util.Stack;

/**
 * create by ziqiiii
 */
public class Example {

    //用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    /*
        解题思路:
            1. 队列的特点是先进先出, 栈的特点是后进先出;
            2. 定义2个空栈A,B, 进队模拟:放入A中;出队模拟:将A的元素放入B中,再出栈
            3. 注意A,B两个栈空/满时的操作
     */
    Stack stack1 = new Stack();
    Stack stack2 = new Stack();

    public void push(int node) {
       //这里没有定义stack1的大小,那就直接存入stack1
        stack1.push(node);

    }

    public int pop() {
        if(!stack2.isEmpty()){
            return stack2.pop(); //stack2不为空,直接弹出栈
        }else{
            while(!stack1.isEmpty()){
                int node = stack1.pop();
                stack2.push(node);
            }

           return stack2.pop();
        }
    }
}

 

这题没给出栈的大小,所以push的时候不考虑边界。

pop的时候要检查,有元素才能pop出。

 

比较简单,什么都不需要考虑,只看队列和栈的特性就行。

 

牛客网运行:

剑指Offer----用两个栈实现队列(java实现)_第1张图片

 

牛客网链接:

 

你可能感兴趣的:(数据结构,用两个栈实现队列,剑指offer,java)