1.题目:

如何用栈实现队列

2.思路:

1.栈的特点的先进后出
2.队列的特点是先进先出
3.那么, 我们就可以使用两个栈来实现队列

3.代码:

  1. package com.xiaoxuanfeng.arithmetic;
  2. import java.util.Stack;
  3. // 用栈实现队列
  4. public class UseStackRealizeQueue {
  5. // 1.创建两个栈
  6. Stack<Integer> stackA = new Stack<>();
  7. Stack<Integer> stackB = new Stack<>();
  8. // 2.元素转移
  9. public void transfer() {
  10. while (!stackA.isEmpty()) {
  11. stackB.push(stackA.pop());
  12. }
  13. }
  14. // 3.入队操作
  15. public void enQueue(int element) {
  16. stackA.push(element);
  17. }
  18. // 4.出队操作
  19. public Integer deQueue() {
  20. if (stackB.isEmpty()) {
  21. if (stackA.isEmpty()) {
  22. return null;
  23. }
  24. transfer();
  25. }
  26. return stackB.pop();
  27. }
  28. // 5.测试
  29. public static void main(String[] args) {
  30. UseStackRealizeQueue queue = new UseStackRealizeQueue();
  31. queue.enQueue(1);
  32. queue.enQueue(2);
  33. queue.enQueue(3);
  34. // 打印结果
  35. System.out.println("出队的元素是:" + queue.deQueue());
  36. }
  37. }