Oferta de Jianzhi 09 Usa dos pilas para resolver el problema de la cola

título

Conocimiento previo

cola

Queue es una interfaz que implementa colas en Java. Tiene solo 6 métodos en total, y generalmente solo usamos 3 de ellos. Las clases de implementación de Queue son LinkedList y PriorityQueue. La clase de implementación más utilizada es LinkedList.

Inserte la descripción de la imagen aquí

Las 6 clasificaciones de métodos de Queue:

Elemento de inserción (agregar): agregar (), oferta () son lo
mismo: no se excede la capacidad, el elemento se inserta desde el final de la cola y se devuelve el elemento insertado.
Diferencia: cuando se excede la capacidad, el método add () lanzará una excepción y offer () devuelve falso

Elemento emergente (eliminar): remove () y poll () son lo
mismo: cuando la capacidad es mayor que 0, elimina y devuelve el elemento eliminado al principio de la línea.
Diferencia: cuando la capacidad es 0, remove () lanzará una excepción, poll () devuelve falso

Obtener el elemento head (no eliminado): element () y peek () son lo
mismo: cuando la capacidad es mayor que 0, ambos devuelven el elemento head. Pero no se borra.
Diferencia: cuando la capacidad es 0, element () lanzará una excepción y peek () devolverá nulo.

Además de las operaciones básicas de recopilación, la cola también proporciona operaciones únicas de inserción, extracción y verificación (como se indicó anteriormente). Cada método tiene dos formas: una genera una excepción (cuando la operación falla) y la otra devuelve un valor especial (nulo o falso, según la operación). La última forma de operación de inserción está diseñada específicamente para implementaciones de cola de capacidad limitada; en la mayoría de las implementaciones, la operación de inserción no fallará.

Lanzar una excepción Devolver valor especial
insertar añadir (e) oferta (e)
Eliminar eliminar() encuesta()
una examinacion elemento() ojeada()

Deque tiene tres usos:

Cola ordinaria (un extremo entra en el otro extremo):
Queue queue = new LinkedList()o Deque deque = new LinkedList()
cola de dos extremos (ambos extremos pueden entrar y salir)
Deque deque = new LinkedList()
pila
Deque deque = new LinkedList()
Métodos de operación de pila Deque: push (), pop (), peek ().

Deque es una colección lineal que admite la inserción y eliminación de elementos en ambos extremos. El nombre deque es una abreviatura de "cola de dos extremos" y generalmente se pronuncia "cubierta". La mayoría de las implementaciones de Deque no tienen un límite fijo en la cantidad de elementos que pueden contener, pero esta interfaz admite tanto deques con restricciones de capacidad como deques sin restricciones de tamaño fijo.

Esta interfaz define métodos para acceder a elementos en ambos extremos de la deque. Proporcione métodos para insertar, quitar e inspeccionar elementos. Cada método tiene dos formas: una forma lanza una excepción cuando la operación falla y la otra forma devuelve un valor especial (nulo o falso, dependiendo de la operación). La última forma de operación de inserción está diseñada para usarse con implementaciones Deque con capacidad limitada; en la mayoría de las implementaciones, las operaciones de inserción no pueden fallar.

Insertar elemento

addFirst (): inserta un elemento al principio de la línea, si el elemento está vacío, ocurre NPE

addLast (): Inserta un elemento al final de la cola, si está vacío, ocurre NPE

offerFirst (): inserta un elemento al principio de la línea, si la inserción es exitosa, devuelve verdadero, de lo contrario devuelve falso

offerLast (): inserta un elemento al final de la cola, devuelve verdadero si la inserción es exitosa, de lo contrario devuelve falso

Quitar elemento

removeFirst (): Devuelve y elimina el elemento principal, si el elemento es nulo, se producirá NoSuchElementException

removeLast (): Devuelve y elimina el elemento al final de la cola. Si el elemento es nulo, se producirá una NoSuchElementException

pollFirst (): devuelve y elimina el elemento principal de la cola, si la cola no tiene elementos, devuelve nulo

pollLast (): devuelve y elimina el último elemento de la cola, si la cola no tiene elementos, devuelve nulo

Obtener elemento

getFirst (): Obtiene el elemento principal pero no lo elimina. Si no hay ningún elemento en la cola, se producirá NoSuchElementException

getLast (): Obtiene el último elemento de la cola pero no lo elimina. Si no hay ningún elemento en la cola, se producirá una NoSuchElementException

peekFirst (): Obtiene el elemento principal de la cola pero no lo elimina, si no hay ningún elemento en la cola, devuelve nulo

peekLast (): Obtiene el último elemento de la cola pero no lo elimina, si no hay ningún elemento en la cola, devuelve nulo

Operación de pila

pop (): Pop los elementos en la pila, es decir, devuelve y elimina el elemento principal, que es equivalente a removeFirst (). Si no hay elementos en la cola, se producirá NoSuchElementException

push (): empuja un elemento a la pila, es decir, agrega un elemento al encabezado de la cola, que es equivalente a addFirst (). Si el elemento es nulo, ocurrirá NPE, y si el espacio de la pila es limitado, ocurrirá una IllegalStateException

Oferta de Jianzhi 09 Usa dos pilas para resolver el problema de la cola

import java.util.LinkedList;
import java.util.Queue;

public class CQueue {
    
    
    Queue<Integer> stack1 = null;
    Queue<Integer> stack2 = null;
    public CQueue() {
    
    
        stack1 = new LinkedList();
        stack2 = new LinkedList();
    }

    public void appendTail(int value) {
    
    
//        stack1作队列头
        stack1.add(value);
    }


    public int deleteHead() {
    
    
//        stack2作为队列尾
        int da = 0 ;
        if ( !stack2.isEmpty()){
    
    
            return stack2.remove();
        }else {
    
    
            if (stack1.isEmpty()){
    
    
                return -1;
                
            }else{
    
    
                while (stack1.size() != 0 ){
    
    
                    stack2.add(stack1.remove());
                    
                }
                return stack2.remove();
            }
        }

    }
}

Reimpreso:
https://blog.csdn.net/devnn/article/details/82591349

https://blog.csdn.net/devnn/article/details/82716447

Supongo que te gusta

Origin blog.csdn.net/qq_43458555/article/details/108065590
Recomendado
Clasificación