Cómo usar dos colas para implementar una pila (JAVA)

problema

Cómo usar dos colas para implementar una pila de manera eficiente

responder

Suponiendo que las dos colas utilizadas para implementar la pila son Q1 y Q2, solo necesita definir las operaciones de apilamiento y estallido para la pila

Empujar:
inserta un elemento en cualquier
cola que no esté vacía. Verifique si la cola Q1 no está vacía. Si Q1 está vacía, realice la operación de puesta en cola en Q2; de lo
contrario , realice la operación de puesta en cola en Q1.
Complejidad de tiempo O (1)

Pop (POP):
mueva N-1 elementos a otra cola, elimine el último elemento de la cola actual para completar la operación pop.
Si la cola Q1 no está vacía, mueva n-1 elementos de Q1 a Q2, y luego Dequeue el último elemento en Q1 y devolver el elemento.
Si la cola Q2 no está vacía, mueva n-1 elementos de Q2 a Q1, y luego retire de la cola el último elemento de Q2 y devuelva el elemento
tiempo Complejidad O (N)

Código


/**
 * 用两个队列实现栈
 */
public class StackWithTwoQueue {
    
    

    DynArrayQueue queue1;
    DynArrayQueue queue2;

    public StackWithTwoQueue() {
    
    
        queue1 = new DynArrayQueue();
        queue2 = new DynArrayQueue();
    }

    public void push(int data) {
    
    
        if (queue1.isEmpty()) {
    
    
            queue2.enQueue(data);
        } else {
    
    
            queue1.enQueue(data);
        }
    }

    public int pop() {
    
    
        int i = 0;
        int size = 0;
        if (queue2.isEmpty()) {
    
    
            size = queue1.getQueueSize();
            while (i < size - 1) {
    
    
                queue2.enQueue(queue1.deQueue());
                i++;
            }
            return queue1.deQueue();
        } else {
    
    
            size = queue2.getQueueSize();
            while (i < size - 1) {
    
    
                queue1.enQueue(queue2.deQueue());
                i++;
            }
            return queue2.deQueue();
        }
    }

}

Supongo que te gusta

Origin blog.csdn.net/weixin_37632716/article/details/108804620
Recomendado
Clasificación