[Oferta de espada] 08 Realiza la cola con dos pilas

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();
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_40996741/article/details/109212296
Recomendado
Clasificación