Cola prioritaria
Si asignamos a cada elemento un número para marcar su prioridad, también podríamos hacer que los números más pequeños tengan una prioridad más alta para que podamos acceder al elemento de mayor prioridad en una colección y búsqueda y eliminarlo. De esta manera, presentamos una estructura de datos como la cola de prioridad. Una cola de prioridad es una colección de 0 o más elementos, cada elemento tiene una prioridad. Las operaciones realizadas en la cola de prioridad incluyen (1) búsqueda (2) insertar una nueva eliminación de elemento (3). En general, la operación de búsqueda se utiliza para buscar el elemento con la mayor prioridad, y la operación de eliminación se utiliza para eliminar el elemento. Para elementos con la misma prioridad, pueden procesarse en orden en primer lugar o en cualquier prioridad.
Cola de simulación de matriz de Java
Una cola es una tabla lineal especial que solo permite operaciones de eliminación en el extremo frontal de la tabla e inserta operaciones en el extremo posterior de la tabla. El final que realiza la operación de inserción se llama la cola del equipo, y el final que realiza la operación de eliminación se llama jefe del equipo. Este es el primer principio (FIFO) que usamos a menudo. La lista en Java se puede usar como una cola. Si agrega elementos al final de la cola, use el método list.add y si elimina elementos del cabezal de la cola, use el método list.remove.
Ejemplo de estructura de la cola de la cola de simulación de matriz de Java:
paquete dataStruct; importar java.util.arrays; importar java.util.comparator; / *** Use matrices para simular la estructura de la tabla lineal de primera rango y primera línea externa con alta prioridad.* Similar a TreeSet y Treemap utilizando comparador*/ public class SimulatePriorityqueuee {public static void main (string [] string []) {simulatePriorityqueue Queue = new SimulatePriorityqueue (4); // simulateue queue = new Simulateue (); // System.out.println ("Obtener el elemento:" + queue.remove ()); cola.insert (1); cola.insert (3); cola.insert (2); cola.insert (5); cola.insert (4); System.out.println ("size:" + queue.size ()); System.out.println ("Peek:" + queue.peek ()); System.out.println ("Take Out Element:" + queue.peek ()); System.out.println ("Take Out Element:" + queue.remove ()); System.out.println ("Take Out Element:" + queue.remove ()); System.out.println ("Extract Element:" + queue.remove ()); // System.out.println ("Elemento de extracción:" + queue.remove ()); System.out.println ("size:" + queue.size ()); System.out.println (); } private int msize = 3; // tamaño privado int [] morra; // matriz privado int mnextitem; // Siguiente posición, también se puede considerar como el número actual de elementos públicos SimulatePriorityQueue () {Marray = new int [msize]; mnextitem = 0; } public SimulatePriorityQueue (int tamaño) {this.msize = size; Marray = new int [msize]; mnextitem = 0; } / *** Insertar elemento* @param item* / public void insert (int item) {if (! Isfull ()) {marray [mnextitem ++] = item; for (int i = 0; i <mNExtitem; i ++) {// bubblestone para (int j = 0; j <mNExtitem - 1; j ++) {if (matray [j]> matriz [j + 1]) {matriz [j] = matrimonio [j + 1] + 0 * (matricy [j + 1] = intrayector [j]); System.out.println (Arrays.ToString (Marray)); }} System.out.println (Arrays.ToString (Marray)); } else {System.out.println ("----------------"); }} / *** Element Element First-in First-Out* @Return* / public int remove () {if (! IsEmpty ()) {return Marray [-mnextitem]; } else {tirar nueva ilegalargumentException ("No se puede sacar ningún elemento"); }} / *** Compruebe el elemento anterior* @return* / public int Peek () {return Marray [mnextitem - 1]; } / *** ¿Está vacío* @return* / public boolean isEmpty () {return mnextitem == 0; } / *** está lleno* @return* / public boolean isfull () {return mNExtitem == msize; } / ** * size * @return * / public int size () {return mnextitem; }} Resultado de salida:
[1, 0, 0, 0][1, 3, 0, 0][1, 2, 3, 0][1, 2, 3, 0][1, 2, 3, 5]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------