|
12 | 12 | <a href="https://github.com/learn-software-engineering/learn-software-engineering/issues/new?title=Colas" class="td-page-meta--issue td-page-meta__issue" target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Notificar una incidencia con la documentanción</a> |
13 | 13 | <a id=print href=/es/programacion/estructuras-de-datos/printview/><i class="fa-solid fa-print fa-fw"></i> Imprimir la sección entera</a></div><div class=td-toc><nav id=TableOfContents><ul><li><a href=#operaciones-principales>Operaciones principales</a></li><li><a href=#implementación>Implementación</a></li><li><a href=#ejemplos-de-uso>Ejemplos de uso</a></li><li><a href=#conclusión>Conclusión</a></li></ul></nav></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://learn-software.com/es/tags/abstracci%C3%B3n/ data-taxonomy-term=abstracci%C3%B3n><span class=taxonomy-label>Abstracción</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/arreglos/ data-taxonomy-term=arreglos><span class=taxonomy-label>Arreglos</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/binario/ data-taxonomy-term=binario><span class=taxonomy-label>Binario</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/bucles/ data-taxonomy-term=bucles><span class=taxonomy-label>Bucles</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/clases/ data-taxonomy-term=clases><span class=taxonomy-label>Clases</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/colas/ data-taxonomy-term=colas><span class=taxonomy-label>Colas</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/computadora/ data-taxonomy-term=computadora><span class=taxonomy-label>Computadora</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/condicionales/ data-taxonomy-term=condicionales><span class=taxonomy-label>Condicionales</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/control-de-flujo/ data-taxonomy-term=control-de-flujo><span class=taxonomy-label>Control De Flujo</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/cpu/ data-taxonomy-term=cpu><span class=taxonomy-label>CPU</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/decimal/ data-taxonomy-term=decimal><span class=taxonomy-label>Decimal</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/diccionarios/ data-taxonomy-term=diccionarios><span class=taxonomy-label>Diccionarios</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/encapsulamiento/ data-taxonomy-term=encapsulamiento><span class=taxonomy-label>Encapsulamiento</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/entrada/salida/ data-taxonomy-term=entrada/salida><span class=taxonomy-label>Entrada/Salida</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/estructuras-de-datos/ data-taxonomy-term=estructuras-de-datos><span class=taxonomy-label>Estructuras De Datos</span><span class=taxonomy-count>5</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/factorial/ data-taxonomy-term=factorial><span class=taxonomy-label>Factorial</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/fibonacci/ data-taxonomy-term=fibonacci><span class=taxonomy-label>Fibonacci</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/for/ data-taxonomy-term=for><span class=taxonomy-label>For</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/funciones/ data-taxonomy-term=funciones><span class=taxonomy-label>Funciones</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/hardware/ data-taxonomy-term=hardware><span class=taxonomy-label>Hardware</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/herencia/ data-taxonomy-term=herencia><span class=taxonomy-label>Herencia</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/herramientas/ data-taxonomy-term=herramientas><span class=taxonomy-label>Herramientas</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/hexadecimal/ data-taxonomy-term=hexadecimal><span class=taxonomy-label>Hexadecimal</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/i/o/ data-taxonomy-term=i/o><span class=taxonomy-label>I/O</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/ide/ data-taxonomy-term=ide><span class=taxonomy-label>IDE</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/if/ data-taxonomy-term=if><span class=taxonomy-label>If</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/listas-enlazadas/ data-taxonomy-term=listas-enlazadas><span class=taxonomy-label>Listas Enlazadas</span><span class=taxonomy-count>3</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/l%C3%B3gica-booleana/ data-taxonomy-term=l%C3%B3gica-booleana><span class=taxonomy-label>Lógica Booleana</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/mapas/ data-taxonomy-term=mapas><span class=taxonomy-label>Mapas</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/memoria/ data-taxonomy-term=memoria><span class=taxonomy-label>Memoria</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/m%C3%A9todos/ data-taxonomy-term=m%C3%A9todos><span class=taxonomy-label>Métodos</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/objetos/ data-taxonomy-term=objetos><span class=taxonomy-label>Objetos</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/oop/ data-taxonomy-term=oop><span class=taxonomy-label>OOP</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/pilares-de-la-poo/ data-taxonomy-term=pilares-de-la-poo><span class=taxonomy-label>Pilares De La POO</span><span class=taxonomy-count>5</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/pilas/ data-taxonomy-term=pilas><span class=taxonomy-label>Pilas</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/polimorfismo/ data-taxonomy-term=polimorfismo><span class=taxonomy-label>Polimorfismo</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/poo/ data-taxonomy-term=poo><span class=taxonomy-label>POO</span><span class=taxonomy-count>5</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/programaci%C3%B3n/ data-taxonomy-term=programaci%C3%B3n><span class=taxonomy-label>Programación</span><span class=taxonomy-count>14</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/python/ data-taxonomy-term=python><span class=taxonomy-label>Python</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/recursi%C3%B3n/ data-taxonomy-term=recursi%C3%B3n><span class=taxonomy-label>Recursión</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/sistemas-de-numeraci%C3%B3n/ data-taxonomy-term=sistemas-de-numeraci%C3%B3n><span class=taxonomy-label>Sistemas De Numeración</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/software/ data-taxonomy-term=software><span class=taxonomy-label>Software</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/tipos-de-datos/ data-taxonomy-term=tipos-de-datos><span class=taxonomy-label>Tipos De Datos</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/variables/ data-taxonomy-term=variables><span class=taxonomy-label>Variables</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/while/ data-taxonomy-term=while><span class=taxonomy-label>While</span><span class=taxonomy-count>1</span></a></li></ul></div></aside><main class="col-12 col-md-9 col-xl-8 ps-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/es/programacion/>Programación</a></li><li class=breadcrumb-item><a href=/es/programacion/estructuras-de-datos/>Estructuras de Datos</a></li><li class="breadcrumb-item active" aria-current=page>Colas</li></ol></nav><div class=td-content><h1>Colas</h1><div class=lead>Las colas (queues en inglés) son una estructura de datos abstracta que funciona bajo el principio FIFO (first in, first out), donde el primer elemento en entrar es también el primero en salir. Las colas se utilizan para ordenar elementos de forma que el que llega primero es procesado primero. Comprender su funcionamiento es esencial para cualquier programador.</div><header class=article-meta><div class="taxonomy taxonomy-terms-article taxo-tags"><h5 class=taxonomy-title>Tags:</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://learn-software.com/es/tags/programaci%C3%B3n/ data-taxonomy-term=programaci%C3%B3n><span class=taxonomy-label>Programación</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/estructuras-de-datos/ data-taxonomy-term=estructuras-de-datos><span class=taxonomy-label>Estructuras De Datos</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/listas-enlazadas/ data-taxonomy-term=listas-enlazadas><span class=taxonomy-label>Listas Enlazadas</span></a></li><li><a class=taxonomy-term href=https://learn-software.com/es/tags/colas/ data-taxonomy-term=colas><span class=taxonomy-label>Colas</span></a></li></ul></div></header><p>La naturaleza FIFO (first in, first out) de las colas se debe a que sólo se puede acceder y manipular el elemento inicial. Cuando se agrega un elemento a la cola se conoce como <em>“enqueue”</em>, mientras que eliminar un elemento se denomina <em>“dequeue”</em>.</p><p>Esto hace que el primer elemento en ser añadido a la cola también sea el primero en ser retirado, de ahí su comportamiento FIFO.</p><p><img src=/images/content/programming/0400-data-structures-1/diagram-queues.jpg alt="Diagrama de una cola"></p><hr><h2 id=operaciones-principales>Operaciones principales</h2><p>Las operaciones básicas de una cola son:</p><ul><li><strong>Enqueue:</strong> Agrega un elemento al final de la cola.</li><li><strong>Dequeue:</strong> Saca el elemento del frente de la cola.</li><li><strong>Peek:</strong> Obtiene el elemento al frente sin sacarlo.</li><li><strong>isEmpty:</strong> Consulta si la cola está vacía.</li></ul><hr><h2 id=implementación>Implementación</h2><p>Al igual que las pilas, las colas se pueden implementar usando listas enlazadas. |
14 | 14 | Se agrega al final y se saca del frente manteniendo referencias a ambos extremos.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-python data-lang=python><span style=display:flex><span><span style=color:#66d9ef>class</span> <span style=color:#a6e22e>Node</span>: |
15 | | -</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> __init__(self, value): |
| 15 | +</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> <span style=color:#a6e22e>__init__</span>(self, value): |
16 | 16 | </span></span><span style=display:flex><span> self<span style=color:#f92672>.</span>value <span style=color:#f92672>=</span> value |
17 | 17 | </span></span><span style=display:flex><span> self<span style=color:#f92672>.</span>next <span style=color:#f92672>=</span> <span style=color:#66d9ef>None</span> |
18 | 18 | </span></span><span style=display:flex><span> |
19 | 19 | </span></span><span style=display:flex><span> |
20 | 20 | </span></span><span style=display:flex><span><span style=color:#66d9ef>class</span> <span style=color:#a6e22e>Queue</span>: |
21 | | -</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> __init__(self): |
| 21 | +</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> <span style=color:#a6e22e>__init__</span>(self): |
22 | 22 | </span></span><span style=display:flex><span> self<span style=color:#f92672>.</span>front <span style=color:#f92672>=</span> <span style=color:#66d9ef>None</span> |
23 | 23 | </span></span><span style=display:flex><span> self<span style=color:#f92672>.</span>end <span style=color:#f92672>=</span> <span style=color:#66d9ef>None</span> |
24 | 24 | </span></span><span style=display:flex><span> self<span style=color:#f92672>.</span>size <span style=color:#f92672>=</span> <span style=color:#ae81ff>0</span> |
|
51 | 51 | </span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> <span style=color:#a6e22e>is_empty</span>(self): |
52 | 52 | </span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> self<span style=color:#f92672>.</span>front <span style=color:#f92672>is</span> <span style=color:#66d9ef>None</span> <span style=color:#75715e># Returns true if front is None</span> |
53 | 53 | </span></span><span style=display:flex><span> |
54 | | -</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> __len__(self): |
| 54 | +</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> <span style=color:#a6e22e>__len__</span>(self): |
55 | 55 | </span></span><span style=display:flex><span> <span style=color:#66d9ef>return</span> self<span style=color:#f92672>.</span>size |
56 | 56 | </span></span><span style=display:flex><span> |
57 | | -</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> __str__(self): |
| 57 | +</span></span><span style=display:flex><span> <span style=color:#66d9ef>def</span> <span style=color:#a6e22e>__str__</span>(self): |
58 | 58 | </span></span><span style=display:flex><span> values <span style=color:#f92672>=</span> [] |
59 | 59 | </span></span><span style=display:flex><span> current <span style=color:#f92672>=</span> self<span style=color:#f92672>.</span>front |
60 | 60 | </span></span><span style=display:flex><span> <span style=color:#66d9ef>while</span> current: |
|
0 commit comments