• 两个队列实现一个栈


    【题目】两个队列实现一个栈

    1. 首先,第一个元素1,选择一个队列插入,比如,选择queue1;

    2. 然后,模拟入栈,后续元素插入已经含有元素的队列中,比如,queue1中再依次插入2,3;

    3. 接着,模拟出栈,后入先出,此时应该3出栈,方法是让queue1先出1,2,同时,queue2依次入1,2,此时queue1出3,即可实现。

     1 import java.util.LinkedList;
     2 import java.util.Queue;
     3 
     4 public class Main {
     5 
     6     public static void main(String[] args) {
     7 
     8         Queue<Integer> queue1 = new LinkedList<Integer>();
     9         Queue<Integer> queue2 = new LinkedList<Integer>();
    10 
    11         MyStack myQueue = new MyStack(queue1, queue2);
    12 
    13         myQueue.appendTail(1);
    14         myQueue.appendTail(2);
    15         myQueue.appendTail(3);
    16         System.out.println(myQueue.deleteHead());
    17         System.out.println(myQueue.deleteHead());
    18         myQueue.appendTail(4);
    19         System.out.println(myQueue.deleteHead());
    20         System.out.println(myQueue.deleteHead());
    21 
    22     }
    23 }
    24 
    25 class MyStack {
    26 
    27     private Queue<Integer> queue1;
    28     private Queue<Integer> queue2;
    29 
    30     public MyStack(Queue<Integer> queue1, Queue<Integer> queue2) {
    31         this.queue1 = queue1;
    32         this.queue2 = queue2;
    33     }
    34 
    35     public Boolean appendTail(Integer num) {
    36 
    37         if (null == queue1 || null == queue2 || null == num) {
    38             return false;
    39         }
    40 
    41         if (0 == queue2.size()) {
    42             queue1.offer(num);
    43             return true;
    44         }
    45 
    46         if (0 == queue1.size()) {
    47             queue2.offer(num);
    48             return true;
    49         }
    50 
    51         return false;
    52 
    53     }
    54 
    55     public Integer deleteHead() {
    56 
    57         if (null == queue1 || null == queue2) {
    58 
    59             return null;
    60         }
    61 
    62         if (0 != queue1.size() && 0 == queue2.size()) {
    63 
    64             int length = queue1.size();
    65 
    66             for (int i = 0; i < length - 1; i++) {
    67                 queue2.offer(queue1.poll());
    68             }
    69             return queue1.poll();
    70         }
    71 
    72         if (0 == queue1.size() && 0 != queue2.size()) {
    73 
    74             int length = queue2.size();
    75 
    76             for (int i = 0; i < length - 1; i++) {
    77                 queue1.offer(queue2.poll());
    78             }
    79             return queue2.poll();
    80         }
    81 
    82         return null;
    83 
    84     }
    85 
    86 }
  • 相关阅读:
    UNP(2rd)第二卷源码编译
    A very hard mathematic problem
    并查集~
    N皇后问题 深搜dfs
    实践中的一点小问题
    java环境配置 HelloWorld
    精确时间计算方法
    C语言关于文件操作
    字典树应用~
    并查集应用2
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/7967728.html
Copyright © 2020-2023  润新知