1. Escríbalo en el frente
Las colas en la estructura de datos deben ser más familiares, lo que es primero en primera salida. Debido al orden, son nombrados como colas. Es como hacer cola. Insertar un nuevo nodo al final del frente, eliminando el nodo en el marco de colección First.jdk también proporciona una interfaz de cola. Esta interfaz representa una cola. Colas secuenciales: ArrayBlockingqueue, LinkedBlokingqueue. (Los dos anteriores son colas de color del pie) y el otro es concurente.
La implementación subyacente consta de dos tipos de listas combinadas. La implementación de matrices tendrá desventajas, lo que causará plenitud falsa. Al principio, cuando la cola está vacía, las variables de referencia de la primera variable de referencia a la cola son nulas. A medida que se eliminan los elementos de la cola, se producirá el frente+1, y la parte trasera es igual a la capacidad de la matriz subyacente. En la estructura de almacenamiento secuencial, el frente siempre guarda el índice de los elementos que están a punto de estar fuera de la cola en la cola, y la parte trasera siempre ahorra el índice de los elementos que están a punto de ingresarse en la cola. El número de elementos en la cola es trasero. En la cola secuencial, la capa subyacente es una matriz, por lo que los elementos de datos guardados no cambiarán, y solo se cambian las dos variables de referencia, trasera y delantera.
Lo que se puede usar para utilizar el espacio de manera efectiva utilizando el almacenamiento de la cadena aquí es que las variables de referencia ocupan espacio adicional.
Operaciones comunes para colas:
1: Inicialización
2: Devuelve la longitud de la cola
3: Agregar elementos
4: eliminar elementos
5: Acceda al elemento de encabezado
6: Acceda a los elementos de cola de pares de la cola
7: Determinar si la cola está vacía
8: Borre la cola
2. Implementación personalizada
La pantalla del código fuente es clara, por lo que no hay necesidad de introducirla
Public Class LinkedQueue <t> {// Clases internas no estáticas de uso de la cola personalizada para representar el nodo de datos del nodo de clase privada de la cola de cadena {// denota el nodo de datos de la cadena de datos privados de la cola; // Referencia al siguiente nodo del nodo privado; @SupplesSWarnings ("no usado") público nodo () {} nodo público (t data, nodo siguiente) {this.data = data; this.next = siguiente; }} // Definir la referencia a la cabeza y la cola de la cola de cadena de nodo privado; Retaguardia de nodo privado; // Definir el tamaño del tamaño privado de la pila de cadena; // Crear un público vacío de cadena a columna Linkedqueue () {front = null; trasero = null;} // Cree una columna de par de cadena con un elemento determinado, y solo un nodo público LinkedQueue (t elemento) {front = new node (elemento, null); // apunte al mismo elemento trasero = front; size ++;} // return the size de la cola de cola pública int longitud () {tamaño de retorno;} // return the Element con el encabezado derecho en la cadena queue, y no se elimina la cola pública. elementfront () {if (! vacía ()) {return front.data;} else {return null; }} // Acceda al último elemento de la cola public t elementRear () {if (! Vacía ()) {return roard.data; } else {return null; }} // devuelve si la cola de par de cadena actual es vacía pública boolean vacía () {size de retorno == 0; } // borrar una cola de cadena public void clear () {front = null; trasero = nulo; size = 0;} // Inserte un nodo en la cola de cadena-Pair public void add (t elemento) {// Si la columna de par de la cadena está vacía, cree un nuevo nodo if (front == null) {trasero = nuevo nodo (elemento, null); delantero = trasero; } else {// Dynamicly crea un nuevo nodo de nodo newRear = nuevo nodo (elemento, nulo); trasero.next = newRear; trasero = newRear; } size ++;} // Eliminar un nodo en la cola de cadena y devolver el nodo deletido public t remove () {nodo OldFront = front; front = front.next; Oldfront.next = null; tamaño--; return oldfront.data;} // return the cole public string toString () {// Si la cola de cadena es la cola de cadena vacía es if (vacía ()) {return "[]"; } else {StringBuilder sBuilder = new StringBuilder ("["); for (nodo Current = front; current! = null; current = current.next) {sbuilder.append (current.data.ToString ()+",");} int len = sbuilder.length (); return sbuilder.delete (len-1, len) .append ("]"). toString ();}} public static void main (string [] args) {LinkedQueue <tring> lqueue = new Linkedqueue <string> (); lqueue.add ("aaa"); lqueue.add ("bbb"); lqueue.add ("ccc"); lqueue.add ("ddd"); system.out.println ("Devuelve el valor del nodo principal de la cola:"+locaue.elementFront ()); system.out.println ("Devuelve el valor del nodo de cola del cola: "+lqueue.elementRear ()); system.out.println (lqueue.length ()); system.out.println (licaue);}}Resultados de ejecución:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.