剑指offer例题——用两个栈实现队列

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

首先是概念理解,栈和对列存取的区别

栈(stack)是一种后进先出(last in first out, LIFO)的数据结构,而队列(queue)是一种先进先出(first in first out, FIFO)的结构,如图:

图参考:http://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html

对于该题目,设置两个栈1和2;

将栈1作为入队列

栈2作为出队列,当栈2为空时,将栈1全部出栈道栈2,栈2再出栈(即出队列)。

代码为:

 1 import java.util.Stack;
 2 
 3 public class Solution {
 4     Stack<Integer> stack1 = new Stack<Integer>();
 5     Stack<Integer> stack2 = new Stack<Integer>();
 6     
 7     public void push(int node) {
 8         stack1.push(node);
 9     }
10     
11     public int pop() {
12         if (stack1.empty()&&stack2.empty()){
13             throw new RuntimeException("Queue is empty!");
14         }
15         if (stack2.empty()){
16             while(!stack1.empty()){
17                 stack2.push(stack1.pop());
18             }
19         }
20         return stack2.pop();    
21     }
22 }

猜你喜欢

转载自www.cnblogs.com/10081-AA/p/10543290.html