其他分享
首页 > 其他分享> > 两个队列实现一个栈

两个队列实现一个栈

作者:互联网

package Queue;

import java.util.LinkedList;

public class TwoQueueMakeStack {
    /**
     * 两个队列实现一个栈
     * 两个队列中至多只有一个队列中有元素
     * 添加元素就是:如果两个队列都没有元素,就将元素添加到队列1中,否则如果哪个队列有元素,就将元素添加到该队列中。
     * 删除元素的话比较麻烦,就是先把一个队列中元素全部放到另外一个队列中,只剩下一个元素,这个元素就是要返回的元素
     *
     */
     public static LinkedList<Integer> queue1 = new LinkedList<>();
     public static LinkedList<Integer> queue2 = new LinkedList<>();
     public static void push(Integer i){
          if(queue1.isEmpty() && queue2.isEmpty()){
              queue1.addFirst(i);
          }
          if(!queue1.isEmpty()){
              queue1.addFirst(i);
          }else{
              queue2.addFirst(i);
          }
     }

     public static Integer pop(){
         if(queue1.isEmpty() && queue2.isEmpty()){
             throw new RuntimeException("栈中无元素");
         }
         if(!queue1.isEmpty()){
             while(queue1.size() > 1){
                 queue2.addFirst(queue1.removeLast());
             }
             return queue1.removeLast();
         }else{
             while(queue2.size() > 1){
                 queue1.addFirst(queue2.removeLast());
             }
             return queue2.removeLast();
         }
     }
     public static void main(String[] args){
         TwoQueueMakeStack stack = new TwoQueueMakeStack();
         stack.push(1);
         stack.push(2);
         System.out.println(stack.pop());
         System.out.println(stack.pop());
     }
}

 

标签:元素,两个,queue1,队列,queue2,实现,isEmpty,public
来源: https://blog.csdn.net/shen19960603/article/details/100991669