Cola (JAVA)

 

Cola: una tabla lineal especial que solo permite operaciones de inserción de datos en un extremo y operaciones de eliminación de datos en el otro extremo.La cola tiene una naturaleza de primero en entrar, primero en salir .

Ingresando a la cola : El final donde se realiza la operación de inserción se llama cola de la cola.

Dequeue : El final que realiza la operación de eliminación se llama encabezado de la cola
. Las colas y las pilas son diferentes en JAVA. La pila es una clase, la cola es una interfaz y la capa inferior se implementa a través de una lista vinculada .

La cola tiene los siguientes métodos.

método Función
oferta booleana (E e) Cola
encuesta electrónica() quitar la cola
ojeada() Obtener el elemento principal
tamaño entero() Obtener el número de elementos válidos en la cola
booleano está vacío() Comprueba si la cola está vacía.

Debido a que Queue es una interfaz, se debe crear una instancia del objeto LinkedList al crear una instancia , porque LinkedList implementa la interfaz Queue.

    Queue<Integer> queue1 = new LinkedList<>();
    Queue<Integer> queue2 = new LinkedList<>();

cola circular

Una cola circular es como enrollar una matriz formando un anillo.

Pero también existen algunos problemas, como cómo juzgar si la cola está vacía o llena.

Hay tres soluciones:

  1. Registrado agregando el atributo de tamaño
  2. reservar un lugar
  3. Usar etiquetas

Otro problema es que si ocurre la siguiente situación, queremos insertar otro elemento en este momento. ¿Cómo hacer un punto final al área con índice 0? 

 

La solucion es:

(1 + el índice señalado por el puntero de cola) % de longitud de la cola

Código: 

class MyCircularQueue {

    int[] queue;
    int front = 0;
    int end = 0;
    public MyCircularQueue(int k) {
        queue = new int[k+1];
    }

    public boolean enQueue(int value) {
        if (isFull()) {
            return false;
        }
        queue[end] = value;
        end = (end+1)%queue.length;
        return true;
    }

    public boolean deQueue() {
        if (isEmpty()) {
            return false;
        }
        front = (front+1)%queue.length;
        return true;
    }

    public int Front() {
        if (isEmpty()) {
            return -1;
        }
        return queue[front];
    }

    public int Rear() {
        if (isEmpty()) {
            return -1;
        }
        return queue[(end-1+queue.length)%queue.length];
    }

    public boolean isEmpty() {
        return front == end;
    }

    public boolean isFull() {
        return (end + 1) % queue.length == front;
    }
}

Supongo que te gusta

Origin blog.csdn.net/2302_76339343/article/details/133246470
Recomendado
Clasificación