兩個隊列實現棧

兩個隊列實現棧


import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

/**
 * @Author JH
 * @CreateDate 18-6-1
 * @Description 兩個隊列實現棧
 */
public class StackToQueue {
    private Queue<Integer> queue1=new LinkedList<Integer>();
    private Queue<Integer> queue2=new LinkedList<Integer>();
    //任意時刻只有一個隊列裏面有元素
    //任意一個隊列裏面有元素就向其中加入新元素
    public void push(int node){
        if(queue1.isEmpty())
            queue2.add(node);
        else queue1.add(node);
    }
    public int pop() {//將一個隊列中的除了末尾元素全部移入另一個隊列 隊尾元素即爲出棧元素
        if (queue1.size() > 0) {
            while (!queue1.isEmpty()) {
                if (queue1.size() == 1) return queue1.remove();
                queue2.add(queue1.remove());
            }
        } else {
            while (!queue2.isEmpty()) {
                if (queue2.size() == 1) return queue2.remove();
                queue1.add(queue2.remove());
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        StackToQueue s=new StackToQueue();
        s.push(1);
        s.push(2);
        s.push(3);
        s.push(4);
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
        System.out.println(s.pop());
    }
}
發佈了91 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章