1. Escreva na frente
As filas na estrutura de dados devem ser mais familiares, que é a primeira a primeira saída. Por causa da ordem, eles são nomeados como filas. É como fila. Inserir um novo nó no final da frente, excluindo o nó no primeiro.JDK Collection Framework também fornece uma interface de fila. Esta interface representa uma fila. Filas seqüenciais: ArrayBlockingQueue, LinkedBlockingQueue. (Os dois acima são filas de cor para os pés) e a outra é concurentlinkedQueue.
A implementação subjacente consiste em dois tipos de listas combinadas. A implementação das matrizes terá desvantagens, o que causará falsa plenitude. No início, quando a fila está vazia, as variáveis de referência da primeira variável de referência para a cauda são nulas. À medida que os elementos da fila são excluídos, a frente+1 ocorrerá e a traseira é igual à capacidade da matriz subjacente. Na estrutura de armazenamento seqüencial, a frente sempre salva o índice dos elementos que estão prestes a estar fora da fila na fila, e a traseira sempre salva o índice dos elementos que estão prestes a ser inseridos na fila. O número de elementos na fila é de frente para trás. Na fila seqüencial, a camada subjacente é uma matriz; portanto, os elementos de dados salvos não serão alterados e apenas as duas variáveis de referência, traseira e frontal, são alteradas.
O que pode ser usado para utilizar efetivamente o espaço usando o armazenamento em cadeia aqui é que as variáveis de referência ocupam espaço extra.
Operações comuns para filas:
1: inicialização
2: Retorne o comprimento da fila
3: Adicione elementos
4: Exclua elementos
5: Acesse o elemento de cabeçalho
6: Acesse os elementos de par-de-cauda da fila
7: determinar se a fila está vazia
8: Limpe a fila
2. Implementação personalizada
A exibição do código -fonte é clara, então não há necessidade de introduzi -lo
classe pública LinkedQueue <T> {// Classe de fila de cadeia personalizada-Use classes internas não estáticas para representar o nó de dados da fila de cadeia nó de classe privada {// denotar o nó de dados da fila de cadeia Dados privados t; // referência ao próximo nó privado em seguida; @Suppresswarnings ("não utilizado") public node () {} public node (dados t, node a seguir) {this.data = data; this.Next = Next; }} // Defina a referência à cabeça e da cauda da fila da corrente na frente do nó privado; nó privado traseiro; // Defina o tamanho da pilha de cadeia SIZER INT; // Crie um public linkedQueue () {front = null; traseiro = nulo;} // Crie uma coluna de par-par de corrente com um certo elemento, e apenas um nó public LinkedQueue (elemento T) {front = new Node (elemento, nulo); // Aponte para o mesmo elemento traseiro = front; tamanho ++;} // retorna o tamanho da cadeia que a fila de cabeça é o que é o comprimento. elementfront () {if (! empty ()) {return front.data;} else {return null; }} // Acesse o último elemento da fila public t elementRear () {if (! Vazio ()) {return rear.data; } else {return null; }} // Retorna se a fila de pares de corrente atual está vazia pública booleana vazia () {return size == 0; } // limpe uma fila de corrente public void clear () {front = null; traseiro = nulo; tamanho = 0;} // Insira um nó na fila da corrente-Pair Public Void Add (elemento T) {// Se a coluna do par de corrente estiver vazia, crie um novo nó if (front == null) {traseiro = novo nó (elemento, nulo); front = traseiro; } else {// Crie dinâmico um novo nó newRear = new Node (elemento, nulo); rear.Next = newRear; traseiro = newrear; } size ++;} // Exclua um nó na fila da corrente e retorne o nó excluído public t Remow () {node Oldfront = front; FRONT = FRONT.NEXT; Oldfront.Next = null; tamanho--; Retornar Oldfront.data;} // retorna a fila public string tostring () {// se a fila da corrente for uma fila de corrente vazia for if (empty ()) {return "[]"; } else {stringbuilder sbuilder = new StringBuilder ("["); para (nó corrente = front; corrente! = null; corrente = current.next) {sbuilder.append (current.data.toString ()+",");} int len = sbuilder.length (); Retorne sbuilder.delete (len-1, len) .append ("]"). tostring ();}} public static void main (string [] args) {LinkedQueue <string> lqueue = new LinkedQueue <string> (); lqueue.add ("aaa"); lqueue.add ("bbb"); lqueue.add ("ccc"); lqueue.add ("ddd"); system.out.println ("retorna o valor do nó da cabeça da fila:"+lqueue.ElementFront ()); System.out.println ("Retorna o valor do nó da cauda do fila: "+lqueue.ElementRear ()); System.out.println (lqueue.length ()); system.out.println (lqueue);}}Resultados em execução:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.