Métodos para implementar colas de bucle usando Java:
1. Agregue un tamaño de atributo para registrar el número de elementos actualmente.
El propósito es cuando la cabeza = trasero. Por tamaño = 0 o tamaño = longitud de matriz. para distinguir la cola como vacía, o la cola está llena.
2. Solo el elemento del tamaño de la matriz -1 se almacena en la matriz, asegurando que la parte trasera no sea igual a la cabeza después de girarlo. Ahí es cuando la cola está llena. trasero+1 = cabeza, solo hay un elemento en el medio.
Cuando trasero = cabeza. La cola debe estar vacía.
Los tipos de operaciones acordadas en ambos extremos de la cola son diferentes:
El final que se puede eliminar se llama jefe del equipo, y dicha operación también se llama Dequeue;
El final que se puede insertar se llama la cola del equipo, y dicha operación también se llama Enqueue.
Diagrama esquemático de la cola
Al implementar una cola, debe prestar atención al fenómeno de desbordamiento falso. Como se muestra en la última imagen de arriba.
Desbordamiento falso como se ve en la figura
Solución: Use el almacenamiento de cadena, que obviamente puede. Cuando se almacena secuencialmente. Nuestra solución común es conectarlo al final y formar una cola circular. Esto hace uso completo del espacio de almacenamiento de la cola.
Diagrama de cola de bucle:
En la imagen de arriba. Puntos frontales al primer elemento en la cola. El trasero apunta a la siguiente posición al final de la cola.
Pero todavía hay un problema: cuando el punto delantero y el trasero apuntan a la misma posición, ¿significa esto que el equipo está vacío o lleno? Puedes imaginar tal situación.
Las prácticas comunes para resolver este problema son esto:
Se utiliza una marca para distinguir situaciones tan confusas.
Sacrificar un espacio elemental. Cuando los delanteros y los traseros son iguales, están vacíos. Cuando la siguiente posición de la parte trasera es delantera. Está lleno.
Por ejemplo, la siguiente figura:
A continuación damos la cola de bucle y usamos otra forma, es decir, sacrificando un espacio de elementos para distinguir entre equipos vacíos y completos.
Varios puntos clave:
1. Puntos de entrada al jefe del equipo. El trasero apunta a la siguiente posición al final del equipo.
2. Inferencia que el equipo está vacío: front == trasero; inferencia de que el equipo está lleno: (trasero+1)%maxSize == Frente.
import java.io.*; public class quereearray {objeto [] a; // matriz de objetos, la cola se almacena hasta el objeto A.Length-1 int front; // Desde el primer subíndice int // Desde el subíndice final pública queuearray () {this (10); // llamar a otros constructores} public QueueArray (int size) {a = nuevo objeto [size]; Frente = 0; trasero = 0; } / *** Agregue un objeto al final de la cola* @param obj object* @return return false cuando la cola está llena, de lo contrario verdadero* / public boolean enqueue (objeto obj) {if (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1). } a [trasero] = obj; trasero = (trasero+1)%a.length; devolver verdadero; } / *** El primer objeto en la cabeza de la cola se deja de* @return el objeto se desanimó cuando la cola está vacía* / objeto public dequeue () {if (trasero == front) {return null; } Objeto obj = a [front]; Frente = (Frente+1)%A.Length; regresar obj; } public static void main (string [] args) {queuearray q = new QueueArray (4); System.out.println (Q.enqueue ("Zhang San")); System.out.println (Q.enqueue ("li si")); System.out.println (Q.enqueue ("zhao wu")); System.out.println (Q.enqueue ("wang yi")); // no puede ingresar la cola, la cola está llena para (int i = 0; i <4; i ++) {System.out.println (q.dequeue ()); }}}El resumen anterior de los dos métodos para implementar colas circulares basadas en matrices Java es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.