El método inverso invierte elementos de una cola

  1. eliminar los elementos de la cola de entrada en una pila
  2. saca los elementos de la pila, colocando cada uno en la cola de salida.
Respuesta 1

Puede revertir una cola usando una pila.

Así es como en Java:

public void reverse(Queue q)
{
    Stack s = new Stack();  //create a stack

    //while the queue is not empty
    while(!q.isEmpty())
    {  //add the elements of the queue onto a stack
       s.push(q.serve());
    } 

    //while the stack is not empty
    while(!s.isEmpty())
    { //add the elements in the stack back to the queue
      q.append(s.pop());
    }

}

Los métodos de agregar y servir de la cola son para agregar y eliminar elementos de esa cola.

Aquí hay un ejemplo:

Una cola tiene elementos:

1 2 3 4

Cuando los elementos se agregan a una pila, el número 1 estará en la parte inferior de la lista y 4 en la parte superior:

1 2 3 4 <- arriba

Ahora haga estallar la pila y vuelva a colocar los elementos en la cola:

4 3 2 1

Espero que esto haya ayudado.

Respuesta: 2

Puede hacerlo sin ninguna otra matriz o lista, solo por recursividad:

public static <T> Queue<T> flip(Queue<T> q) {
    Queue<T> ret = new Queue<>();
    recursiveFlip(q, ret);
    return ret;
}

private static <T> void recursiveFlip(Queue<T> src, Queue<T> dest) {
    T buffer = src.dequeue();
    if(!src.isEmpty()) {
        recursiveFlip(src, dest);
    }
    dest.enqueue(buffer);
}

Los primeros elementos se apilarán en la parte "superficial" de la pila, mientras que los últimos elementos en la parte "más profunda", y cuando la recursión llegue al final, los valores "más profundos" se agregarán primero y los "superficiales" al final.

Pero tenga en cuenta que cada elemento significa un paso más profundo en la recursión, por lo que se producirá un error de desbordamiento de la pila si la cola es demasiado grande.

Además, la cola original no "sobrevivirá" al cambio.

Respuesta: 3

Estoy siguiendo Spring in Action (parte 2) e intento crear la aplicación Spittr como muestra el libro. (con Spring Tool Suite 7.3.7. y Maven.) El problema es que obtengo lo siguiente ...

Esperar y notificar parecen mensajes que se pasan entre subprocesos; si esto es cierto, debe haber colas para almacenar estos mensajes en el búfer. Si es así, debe haber operaciones atómicas para agregar mensajes a ...

¿Es posible ordenar 2d-array por última fila con Arrays.sort (,) en Java. El siguiente fragmento funciona muy bien para ordenar por última columna, pero no parece tener una forma de ajustarse para ordenar por ...

Estoy tratando de sincronizar mi variable de recuento para get y una función auxiliar privada para configurar en función de otros miembros. Varios subprocesos llaman a setCount () como deadlineNoteVisible y ...