Fila de prioridade
Se atribuirmos a cada elemento um número para marcar sua prioridade, também podemos fazer com que números menores tenham maior prioridade, para que possamos acessar o elemento de prioridade mais alta em uma coleção, pesquisar e excluí -lo. Dessa forma, introduzimos uma estrutura de dados como fila de prioridade. Uma fila de prioridade é uma coleção de 0 ou mais elementos, cada elemento tem uma prioridade. As operações realizadas na fila de prioridade incluem (1) pesquisa (2) Insira um novo elemento (3). Geralmente, a operação de pesquisa é usada para procurar o elemento com a maior prioridade e a operação de exclusão é usada para excluir o elemento. Para elementos com a mesma prioridade, eles podem ser processados na primeira ordem ou em qualquer prioridade.
Fila de simulação de array java
Uma fila é uma tabela linear especial que permite apenas operações de exclusão na extremidade frontal da tabela e insira operações na parte traseira da tabela. O fim que executa a operação de inserção é chamado de cauda da equipe, e o fim que executa a operação de exclusão é chamado de chefe da equipe. Este é o primeiro princípio da primeira saída (FIFO) que costumamos usar. A lista em Java pode ser usada como uma fila. Se você adicionar elementos no final da fila, use o método List.Add e, se você excluir elementos da cabeça da fila, use o método List.Remove.
Exemplo de estrutura da fila de simulação de matriz java Exemplo:
pacote datastuct; importar java.util.arrays; importar java.util.comparator; / *** Use matrizes para simular a estrutura da tabela linear de primeira classificação e primeira linha com alta prioridade. // simulatequeue fila = new simulatequeue (); // System.out.println ("busca o elemento:" + fileue.remove ()); Queue.Insert (1); Queue.insert (3); Queue.insert (2); Queue.insert (5); Queue.insert (4); System.out.println ("size:" + fileue.size ()); System.out.println ("peek:" + fileue.peek ()); System.out.println ("Tire o elemento:" + fileue.peek ()); System.out.println ("Tire o elemento:" + fileue.remove ()); System.out.println ("Tire o elemento:" + fileue.remove ()); System.out.println ("Extract Element:" + fileue.remove ()); // System.out.println ("Extract Element:" + fileue.remove ()); System.out.println ("size:" + fileue.size ()); System.out.println (); } private int msize = 3; // tamanho privado int [] marray; // Array Private int mNextItem; // Próxima posição, também pode ser considerada como o número atual de elementos public simulatePriorityQueue () {marray = new int [msize]; mNextItem = 0; } public simulatePriorityQueue (int size) {this.msize = size; marray = novo int [msize]; mNextItem = 0; } / *** Inserir elemento* @param item* / public void insert (int item) {if (! Isfull ()) {marray [mNextItem ++] = item; para (int i = 0; i <mNextItem; i ++) {// bubblestone for (int j = 0; j <mNextItem - 1; j ++) {if (marray [j]> marray [j + 1]) {marray [j] = [j + 1] + 0 * (J + 1] = 1] =; System.out.println (Arrays.toString (Marray)); }} System.out.println (Arrays.toString (marray)); } else {System.out.println ("----------------"); }} / *** Remova o elemento primeiro a sair* @return* / public int REMOT () {if (! IsEmpty ()) {return marray [-mNextItem]; } else {lança nova ilegalArgumentException ("nenhum elemento pode ser retirado"); }} / *** Verifique o elemento anterior* @return* / public int peek () {return marray [mNextItem - 1]; } / *** está vazio* @return* / public boolean isEmpty () {return mNextItem == 0; } / *** está cheio* @return* / public boolean isfull () {return mNextItem == msize; } / ** * Tamanho * @return * / public int size () {return mNextItem; }} Resultado da saída:
[1, 0, 0, 0] [1, 3, 0, 0] [1, 2, 3, 0] [1, 2, 3, 0] [1, 2, 3, 5] -------------------------------------------------------------------------------------------------------------------------------------