1. Uma breve introdução às filas e pilhas
1.1. Conceitos básicos de filas
Fila: É uma coleção que suporta a primeira em primeiro lugar (FIFO), ou seja, os dados inseridos primeiro são buscados primeiro!
Como mostrado na figura abaixo:
1.2. Conceitos básicos de pilha
Stack: é uma coleção que suporta o último na primeira saída (LIFO), ou seja, os dados inseridos posteriormente são buscados primeiro!
Como mostrado na figura abaixo:
2. Implementar filas e pilhas em JavaScript
No JavaScript, filas e matrizes são implementadas principalmente por meio de matrizes. Os seguintes métodos são fornecidos nas matrizes JS para facilitar a implementação de filas e pilhas:
• Shift: exclua o primeiro elemento da matriz e retorne o valor desse elemento.
• NETIFT: Adicione um ou mais elementos no início da matriz e devolva um novo comprimento
• Empurre: adicione um elemento no final do meio e devolva o novo comprimento
• POP: Exclua o último elemento da matriz e retorne o valor desse elemento.
2.1. Implementar filas
<script type = "text/javascript"> // Crie uma matriz para simular a fila var a = new Array (); console.log (a); // desiludir: adicione um ou mais elementos no início da matriz e devolva o novo comprimento console.log ("enter"); a.unshift () console.log (a); // -----> a.UnShift (); console.log (a); // ----->, a.UnShift (); console.log (a); //- ---->, A.UnShift (); console.log (a); // ----->, A.UnShift (); console.log (a); // ----> ,, a.UnShift (); console.log (a); // -----> ,,, Console .log ("Exit, primeiro em, primeiro out"); console.log (a); // pop: exclua o último elemento da matriz e retorne o valor desse elemento a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // ----> console.log (a); a.pop (); //-O efeito de saída no console do navegador do Google é mostrado na figura abaixo:
2.2. Implementando a pilha
<script type = "text/javascript"> // Crie uma matriz para simular a pilha var a = new Array (); console.log (a); // push: adicione um ou mais elementos no final da matriz e retorne o novo comprimento console.log ("Stack"); a.push () console.log (a); // -----> a.push (); console.log (a); // ----->, a.push (); console.log (a); // ------ ->, a.push (); console.log (a); // ----->, a.push (); console.log (a); // -----> ,, a.push (); console.log (a); // -----> ,,, console.log (" fora da pilha, primeiro out "); console.log (a); // pop: exclua o último elemento da matriz e retorne o valor desse elemento a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // ----> console.log (a); a.pop (); //-O efeito de saída no console do navegador do Google é mostrado na figura abaixo:
2.3. Teste de desempenho do método push e o método de não acabamento
Os métodos Push e não aprimorados da matriz podem adicionar elementos à matriz atual. A diferença é que o push é adicionado no final, enquanto o desvio é adicionado no início. A partir do princípio, podemos saber que a eficiência da NEMNAFF é relativamente baixa. O motivo é que toda vez que adiciona um elemento, ele move o elemento existente para baixo em uma posição. Mas qual o tamanho da diferença de eficiência? Vamos fazer um teste simples abaixo.
<script type = "text/javascript">/*A explicação da explicação do truque de "var s =+newDate ();" No código é o seguinte: =+Este operador não existe;+é equivalente a .ValueOf ();+new Date () é equivalente a new Date (). Valueof () // Os resultados retornam o milissegundos do tempo atual (ALERT (+nova); ]; var startTime = +new Date (); //+new Date () é equivalente a new Date (). ValueOf (), retornando os milissegundos do horário atual // Push Performance Test for (var i =; i <; i ++) {arr.push (i); } var endtime =+new date (); console.log ("leva tempo para chamar o método de push para adicionar um elemento à matriz"+(Endtime-starttime)+"ms"); startTime = +new Date (); arr = []; // Teste de desempenho de desativação para (var i =; i <; i ++) {arr.unshift (i); } endtime =+new Date (); console.log ("Leva tempo para chamar o método de não-final para adicionar um elemento à matriz"+(Endtime-starttime)+"ms"); </script>Esse código executa 100.000 operações de push e não aprimoramento, respectivamente, e o executa uma vez no navegador do Google. O resultado é mostrado na figura abaixo:
Pode -se observar que o desvio é cerca de 100 vezes mais lento que o push! Portanto, você deve usar o desvião com cautela na vida cotidiana, especialmente para grandes matrizes. Se você precisar alcançar o efeito do NEATFF, poderá usar o método reverso da Array, que pode reverter uma matriz. Primeiro, adicione os elementos a serem colocados na matriz com push e, em seguida, execute novamente o reverso para alcançar o efeito do não dividido. por exemplo:
<script type = "text/javascript"> // Crie uma matriz para simular a pilha var a = new Array (); // use o método push para adicionar elementos a.push () a.push (); a.push (); a.push (); chamado reverso que pode inverter uma matriz. Primeiro, adicione os elementos a serem colocados na matriz com push e depois execute novamente reverso, e o efeito do não é alcançado a. reverse (); // use o método reverso para reverter o console do array.log ("a ordem dos elementos na matriz após a inversão da matriz"); console.log (a); </script>O efeito de saída no console do navegador do Google é mostrado na figura abaixo:
A julgar pelos resultados em execução, a ordem dos elementos da matriz foi revertida.
2.4. Teste de desempenho do método reverso
Qual é o desempenho do reverso? Vamos testá -lo novamente:
<script type = "text/javascript"> var arr = [], s = +nova data; for (var i =; i <; i ++) {arr.push (i); } // Chame o método reverso para reverter a ordem dos elementos na matriz arr.Reverse (); console.log ("Call RENTSO Método para reverter a ordem dos elementos na matriz:"+(+nova data - s)+"msec"); </sCript>O efeito de saída no console do navegador do Google é mostrado na figura abaixo:
Pelo efeito de execução, podemos ver que o método reverso tem desempenho extremamente alto e pode ser usado com confiança.
O exposto acima é um resumo da implementação de filas e pilhas por meio de matrizes em JavaScript, e eu simplesmente testei as vantagens e desvantagens de desempenho de push, desvincular e reverter na operação de grandes matrizes.
O exposto acima é a fila e a pilha na estrutura de dados de implementação de JavaScript, introduzida pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!