1. Descripción del problema
1. Implemente una cola con dos pilas. La declaración de la cola es la siguiente: implemente sus dos funciones appendTail y deleteHead, que completan respectivamente las funciones de insertar enteros al final de la cola y eliminar enteros al principio de la cola. (Si no hay ningún elemento en la cola, la operación deleteHead devuelve -1)
Dos, la solucion
1. Se utiliza una pila para almacenar la pila.
2. Se utiliza una pila para almacenar fuera de la pila.
3, operación concreta
A: método de construcción
Initialize stackIn y stackOut para que estén vacíos
B: Insertar elemento
Insertar elemento método correspondiente appendTail
stackIn directamente insertar elemento
C: Eliminar elemento
Eliminar el método correspondiente del elemento deleteHead
Si stackOut está vacío, saca todos los elementos en stackIn e insértalo en stackOut.
Si stackOut todavía está vacío, devuelve -1, de lo contrario saca un elemento de stackOut y vuelve
Tres, el código
package com.haoxiansheng.demo01.SwordfingerOffer;
import lombok.extern.slf4j.Slf4j;
import java.util.Stack;
/**
* @author flame
* @data 2020/10/21
*/
@Slf4j
public class CQueue {
private Stack<Integer> stackIn;
private Stack<Integer> stackOut;
public CQueue() {
stackIn = new Stack<>();
stackOut = new Stack<>();
}
public static void main(String[] args) {
CQueue queue = new CQueue();
queue.appendTail(8);
queue.appendTail(9);
queue.appendTail(10);
log.info("pop=>{}", queue.deleteHead());
log.info("pop=>{}", queue.deleteHead());
log.info("pop=>{}", queue.deleteHead());
log.info("pop=>{}", queue.deleteHead());
}
/**
* 入队
* @param value
*/
public void appendTail(int value) {
stackIn.push(value);
}
/**
* 出队
* @return
*/
public int deleteHead() {
if (!stackOut.isEmpty()) {
return stackOut.pop();
} else {
while (!stackIn.isEmpty()) {
stackOut.push(stackIn.pop());
}
}
return stackOut.isEmpty() ? -1 : stackOut.pop();
}
}