¿Por qué quitar de la cola no está funcionando correctamente para mi código?

manhar:

He hecho un código para una cola utilizando dos pilas. Pero la parte retirada de cola del código se comporta extrañamente, se está quitando el primer elemento de la prueba correctamente, pero segundo y tercer elemento tiene orden equivocado.

Este es el código de quitar de la cola, estoy usando:

public T dequeue() throws NoSuchElementException {

while(!s1.isEmpty()){
  T tmp = s1.pop();
  s2.push(tmp);
}

Stack<T> temp = new Stack<>();
temp = s1;
s1 = s2;
s2 = temp;

    return s1.pop();
}

Este es el código de caso de prueba, que está dando orden inverso para 51 y 86.

@Test
public void testTwoElement() {
    Queue<Integer> q = new Queue<>();
    q.enqueue(42);
    q.enqueue(51);
    q.enqueue(86);
    assertEquals(3, q.size());
    assertEquals(new Integer(42), q.dequeue());
    assertEquals(new Integer(51), q.dequeue());
    assertEquals(new Integer(86), q.dequeue());
    assertEquals(0,q.size());
    assertEquals(true,q.isEmpty());
}

No soy capaz de entender la razón, por qué está sucediendo así. Le agradecería si alguien me puede decir lo que va mal con el código.

HariUserX:

La razón es que se vuelven a ordenar el s1 cuando se llama a quitar de la cola del segundo tiempo.

Esto se explica a continuación,

Estado inicial:

S1: 86 -> 51 -> 42

En primer lugar quitar de la cola:

S1: 86 -> 51 -> 42

S2:

vaciar s1 y s2 añadir elementos a:

S1:

s2: 42 -> 51 -> 86

Ahora S1 y S2 de intercambio:

S1: 42 -> 51 -> 86

S2:

Ahora pop s1 y regresar 42:

S1: 51 -> 86

Segundo quitar de la cola:

S1: 51 -> 86

S2:

vaciar s1 y s2 añadir elementos a:

S1:

s2: 86 -> 51

Ahora S1 y S2 de intercambio:

S1: 86 -> 51

S2:

Ahora pop s1 y regresar 86:

S1: 51

La forma correcta de resolver esto es no s1 swap con s2 y esperar a que todos los elementos de S2 hasta el final y luego repoblar con s2 s1. No estoy añadiendo la aplicación como ya se hace en otra respuesta por mangusta.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=211940&siteId=1
Recomendado
Clasificación