1. Una breve introducción a las colas y pilas
1.1. Conceptos básicos de colas
Cola: es una colección que admite la primera en primera salida (FIFO), es decir, ¡los datos insertados primero se obtienen primero!
Como se muestra en la figura a continuación:
1.2. Conceptos básicos de pila
PISTA: Es una colección que admite la última vez (LIFO), es decir, ¡los datos que se insertan más adelante se obtienen primero!
Como se muestra en la figura a continuación:
2. Implementar colas y pilas en JavaScript
En JavaScript, las colas y las matrices se implementan principalmente a través de matrices. Los siguientes métodos se proporcionan en las matrices JS para facilitarnos implementar colas y pilas:
• Cambio: elimine el primer elemento de la matriz y devuelva el valor de este elemento.
• Deshift: agregue uno o más elementos al comienzo de la matriz y devuelva una nueva longitud
• Push: agregue un elemento al final del medio y devuelva la nueva longitud
• Pop: elimine el último elemento de la matriz y devuelva el valor de este elemento.
2.1. Implementar colas
<script type = "text/javaScript"> // Cree una matriz para simular la cola var a = new array (); console.log (a); // Unphift: agregue uno o más elementos al comienzo de la matriz y devuelva la nueva longitud console.log ("Enter"); a.unshift () console.log (a); // -----> a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); //-- ) .log ("Salir, primero en, primero out"); console.log (a); // Pop: Elimine el último elemento de la matriz y devuelva el valor de este elemento a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); </script>El efecto de salida en la consola del navegador de Google se muestra en la figura a continuación:
2.2. Implementación de la pila
<script type = "text/javaScript"> // Cree una matriz para simular la pila var a = new array (); console.log (a); // PUSH: Agregue uno o más elementos al final de la matriz y devuelva la nueva longitud 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 (" fuera de la pila, primero fuera "); console.log (a); // pop: elimine el último elemento de la matriz y devuelva el valor de este elemento a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); </script>El efecto de salida en la consola del navegador de Google se muestra en la figura a continuación:
2.3. Prueba de rendimiento del método de empuje y el método de desplazamiento
Los métodos de empuje y desagüe de Array pueden agregar elementos a la matriz actual. La diferencia es que el empuje se agrega al final, mientras que el desagüe se agrega al principio. Desde el principio, podemos saber que la eficiencia de Unchift es relativamente baja. La razón es que cada vez que agrega un elemento, mueve el elemento existente por una posición. Pero, ¿qué tan grande es la diferencia en la eficiencia? Hagamos una prueba simple a continuación.
<script type = "text/javaScript">/*La explicación de la explicación del truco de "var s =+newDate ();" en el código es el siguiente: =+Este operador no existe;+es equivalente a .ValueOf ();+new Date () es equivalente a una fecha nueva (). ValueOf () // Los resultados devuelven los MilliseConds de la hora actual, alerta (+nueva fecha ()); alerta (+nueva fecha); var s = nueva fecha (); alerta (s.ValueOf (); alerta (alerta (nuevo datil ]; var starttime = +new Date (); //+nueva fecha () es equivalente a una nueva fecha (). ValueOf (), devolviendo los milisegundos de la hora actual // prueba de rendimiento para (var i =; i <; i ++) {arr.push (i); } var endtime =+new Date (); console.log ("Se necesita tiempo para llamar al método de push para agregar un elemento a la matriz"+(endtime-starttime)+"ms"); starttime = +new Date (); arr = []; // prueba de rendimiento desanimado para (var i =; i <; i ++) {arr.unshift (i); } endtime =+new date (); console.log ("Se necesita tiempo para llamar al método Unshift para agregar un elemento a la matriz"+(endtime-starttime)+"ms"); </script>Este código realiza 100,000 operaciones de empuje y desagüe respectivamente, y lo ejecuta una vez en Google Browser. El resultado se muestra en la figura a continuación:
¡Se puede ver que Unchift es aproximadamente 100 veces más lento que el empuje! Por lo tanto, debe usar el cambio con precaución en la vida diaria, especialmente para matrices grandes. Si tiene que lograr el efecto de Unchift, puede usar el método inverso de Array, que puede revertir una matriz. Primero agregue los elementos que se colocarán en la matriz con Push, y luego ejecute Reverse nuevamente para lograr el efecto de desagradable. Por ejemplo:
<script type = "text/javaScript"> // crea una matriz para simular la pila var a = new array (); // use el método de empuje para agregar elementos a.push () a.push (); a.push (); a.push (); console.log ("el orden de los elementos en el array en el mata Método llamado reverso que puede invertir una matriz. Primero agregue los elementos que se colocarán en la matriz con Push, y luego realice reverso nuevamente, y el efecto de deshift se logra a.reverse (); // use el método inverso para revertir la matriz console.log ("El orden de los elementos en la matriz después de la inversión de la matriz"); console.log (a); </script>El efecto de salida en la consola del navegador de Google se muestra en la figura a continuación:
A juzgar por los resultados de la ejecución, la orden de los elementos de matriz ha sido revertido.
2.4. Prueba de rendimiento del método inverso
¿Cuál es el rendimiento del reverso? Vamos a probarlo de nuevo:
<script type = "text/javaScript"> var arr = [], s = +nueva fecha; for (var i =; i <; i ++) {arr.push (i); } // Llame al método inverso para revertir el orden de los elementos en la matriz arr.reverse (); console.log ("Llame al método inverso para revertir el orden de los elementos en la matriz:"+(+nueva fecha - s)+"msec"); </script>El efecto de salida en la consola del navegador de Google se muestra en la figura a continuación:
Desde el efecto de ejecución, podemos ver que el método inverso tiene un rendimiento extremadamente alto y puede usarse con confianza.
Lo anterior es un resumen de la implementación de colas y pilas a través de matrices en JavaScript, y simplemente he probado las ventajas de rendimiento y las desventajas del empuje, el desgaste y el reverso en la operación de matrices grandes.
Lo anterior es la cola y la pila en la estructura de datos de implementación de la matriz de JavaScript introducida por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!