46 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Queues
 | |
| localeTitle: frac
 | |
| ---
 | |
| ## Colas
 | |
| 
 | |
| La cola es una estructura de datos de First In First Out (FIFO). Muchos algoritmos utilizan colas en su núcleo para mejorar el rendimiento.
 | |
| 
 | |
| La cola es uno de los tipos de datos abstractos fundamentales (ADT). Es similar a las colas que tenemos en películas o supermercados. La primera persona en llegar será servida primero, ¿verdad? Del mismo modo, el primer elemento que se inserte se eliminará primero. Hay varios tipos de colas tales como,
 | |
| 
 | |
| 1.  Cola simple (o cola)
 | |
| 2.  Cola circular
 | |
| 3.  Cola de prioridad
 | |
| 4.  Dequeue (doble cola de cola)
 | |
| 
 | |
| Si puede comprender la cola simple (que de aquí en adelante se denominará "Cola"), entonces todas las demás son igual de fáciles, con pequeñas modificaciones.
 | |
| 
 | |
| Las operaciones más comunes disponibles en la cola son,
 | |
| 
 | |
| 1.  Agregar / ofrecer: inserta un elemento en el final de la cola.
 | |
| 2.  Eliminar / Sondeo: elimina un elemento del principio de la cola.
 | |
| 3.  Peek: devuelve el elemento al principio de la cola, pero no lo eliminará.
 | |
| 4.  Tamaño / recuento: devuelve el número de elementos actualmente presentes en la cola.
 | |
| 5.  IsEmpty - Compruebe si la cola está vacía o no.
 | |
| 
 | |
| La implementación de una cola es posible utilizando matrices o listas vinculadas. La siguiente es una implementación de matriz simple de la estructura de datos de cola con sus operaciones más comunes.
 | |
| 
 | |
| \`\` \`JavaScript  
 | |
| var Queue = function () { var queue = \[\]; var frontal = 0; var espalda = 0; regreso { isEmpty: function () { volver al frente> = atrás || queue.length === 0; } agregar: función (elem) { / \* También puedes hacer queue.push (elem) en JavaScript. Así lo hacen en otros idiomas \* / queue \[back ++\] = elem; } eliminar: función () { if (! this.isEmpty ()) { cola de retorno \[frente ++\]; // o queue.shift () } else { lanzar nuevo error ("La cola está vacía"); } } peek: function () { if (! this.isEmpty ()) { cola de retorno \[frente\]; } } } };
 | |
| 
 | |
| var queue = new Queue (); console.log (queue.isEmpty ()); // cierto queue.add (1); queue.add (2); console.log (queue.remove ()); // 1 console.log (queue.peek ()); // 2 console.log (queue.remove ()); // 2 console.log (queue.remove ()); // excepción \`\` \`
 | |
| 
 | |
| #### Aplicaciones
 | |
| 
 | |
| *   Simulación
 | |
| *   Programación (Programación de trabajos, Programación de discos)
 | |
| *   Gestión de recursos compartidos
 | |
| *   Buffer de teclado
 | |
| *   Amplia primera búsqueda
 | |
| *   Para manejar la congestión en la red.
 | |
| 
 | |
| #### Más información:
 | |
| 
 | |
| *   [Más información en colas - GeeksForGeeks](http://www.geeksforgeeks.org/queue-data-structure/)
 | |
| *   [Resuelve desafíos usando colas - Hackerrank](https://www.hackerrank.com/domains/data-structures/queues)
 | |
| *   [HackerRank Stacks and Queues Video](https://www.youtube.com/watch?v=wjI1WNcIntg) |