剑指Offer——用两个栈实现队列

1、题目描述

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

2、代码实现

 1 package com.baozi.offer;
 2 
 3 import java.util.Stack;
 4 
 5 /**
 6  * 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
 7  *
 8  * @author BaoZi
 9  * @create 2019-07-11-9:47
10  */
11 public class Offer5 {
12     Stack<Integer> stack1 = new Stack<Integer>();
13     Stack<Integer> stack2 = new Stack<Integer>();
14 
15     //1、实现队列的push操作
16     public void push(int node) {
17         stack1.push(node);
18     }
19 
20     //2、实现队列的pop操作
21 
22     /**
23      * 通过两个栈实现一个队列的输出操作思路就是:根据栈数据结构的特点,先把非空的栈stack1中的元素全部转移到另外一个
24      * 空栈stack2中,此时stack2的栈顶元素就是第一个存入栈中的元素,保存在一个临时变量中输出即可,在然后在stack2中的
25      * 元素再一次全部转移到stack1中。
26      * 每次操作都经过这样几个步骤就能模拟实现出队列的效果。
27      *
28      * @return
29      */
30     public int pop() {
31         while (!stack1.isEmpty()) {
32             stack2.push(stack1.pop());
33         }
34         int first = stack2.pop();
35         while (!stack2.isEmpty()) {
36             stack1.push(stack2.pop());
37         }
38         return first;
39     }
40 }

 

posted @ 2019-07-11 10:04  包子的百草园  阅读(119)  评论(0编辑  收藏  举报