Javaは2つのキューで1つのスタックの機能を実現します

1639 ワード

スタックに入る:要素をキューAに入れる:キューAの赤い要素の個数が1であるかどうかを判断し、1に等しい場合、キューを出る.そうでない場合、キューAの要素をキューBに入れ、キューAの要素が1つ残っていることを知ってから、キューAがキューAから出て、キューBの要素をキューAに入れる.
import java.util.*;

/**
 *            ,    Push Pop  。
 */

/**
 * @author wangzhen
 * @param 
 *
 */
public class DoubleQueueToStack<T> {
    //       
    Queue queue1 = new ArrayDeque();
    Queue queue2 = new ArrayDeque();

    //   
    public void push(T t) {
        queue1.add(t);
    }

    //   
    public T pop() {
        if (queue1.size() <= 1) {
            return queue1.poll();
        } else {
            while (queue1.size() > 1) {
                queue2.add(queue1.poll());
            }
        }

        while (queue2.size() > 0) {
            queue1.add(queue2.poll());
        }

        return queue1.poll();

    }
}