您的位置:首页 > 编程语言 > Java开发

【Java面试题】用两个栈来实现队列

2020-02-16 18:10 302 查看

【题目】:

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

【示例】: 队列:输入1234,输出1234

【关键点】:
利用栈(先进后出)原理、 2个栈组成队列(先进先出);

  • 栈1:入栈顺序abcd、出栈顺序dcba;
  • 栈2:入栈顺序 为栈1的出栈顺序dcba、 出栈顺序为abcd。

队列:先进先出(输入abcd,出来顺序依旧是abcd)

【Java】:

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);//存入栈1
}
public int pop() {//取出
if(stack2.empty()){//必须判断栈2全为空时,再循环存入栈2,不然队列流水线走可能会错位;
while(!stack1.isEmpty()) {
stack2.push(stack1.pop());//取出栈1全部节点存入栈2
}
}
return stack2.pop();//栈2弹出
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
cungudafa 发布了207 篇原创文章 · 获赞 359 · 访问量 13万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: