Este documento describe las colas como una estructura de datos simple en la que los elementos se introducen por un extremo y se eliminan por el otro, siguiendo el orden FIFO. Explica las representaciones de colas normales y circulares usando vectores y listas enlazadas, así como sus operaciones básicas de adición y eliminación. También presenta la jerarquía de clases ColaSimple y sus clases derivadas CSNormal y CSCircular para implementar colas en Java.
Este documento describe las estructuras de datos de pilas y colas múltiples. Explica cómo representar gráficamente conjuntos de pilas y colas usando vectores, y define las operaciones básicas como adicionar y eliminar elementos. También presenta las clases y métodos necesarios para implementar pilas y colas múltiples en Java.
Este documento resume conceptos sobre estructuras de datos como la recursividad y las colas. La recursividad se define como una técnica que permite que una función se llame a sí misma de forma repetida. Las colas son estructuras de datos FIFO donde los elementos se insertan por un extremo y se eliminan por el otro, siguiendo el orden de inserción. El documento explica las características y algoritmos básicos de creación, inserción y eliminación para colas lineales y circulares.
Una cola es una estructura de datos donde los elementos se agregan por un extremo (final) y se quitan por el otro (frente), siguiendo el orden FIFO (primero en entrar, primero en salir). Una cola se puede implementar usando un arreglo y variables para el frente y final. Operaciones comunes incluyen encolar (agregar), desencolar (quitar), cola vacía y cola llena. Las colas se usan comúnmente para almacenar elementos que necesitan procesarse según su orden de llegada, como en sistemas de imp
1) Las pilas y colas son estructuras de datos lineales que imponen restricciones en las posiciones de inserción y extracción de elementos. 2) Una pila sigue el principio LIFO donde el último elemento insertado es el primero en salir, mientras que una cola sigue el principio FIFO donde el primer elemento en entrar es el primero en salir. 3) Ambas estructuras tienen operaciones básicas como push/pop para pilas e insertar/leer para colas.
Este documento describe las estructuras de datos de colas. Explica que una cola tiene dos extremos, frente y final, y que los elementos se agregan al final y se eliminan del frente siguiendo el orden FIFO. También cubre las operaciones básicas de encolar y desencolar elementos y diferentes formas de implementar colas usando arreglos lineales, circulares o listas enlazadas.
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
El documento describe diferentes tipos de estructuras de datos lineales estáticas y dinámicas, incluyendo pilas, colas y listas enlazadas. Las estructuras estáticas tienen un tamaño fijo definido antes de la ejecución del programa, mientras que las estructuras dinámicas pueden cambiar de tamaño durante la ejecución. Las pilas siguen el principio LIFO, las colas siguen FIFO, y las listas enlazadas almacenan los elementos de forma no contigua usando nodos con punteros.
Este documento describe las estructuras de datos lineales como colas y pilas. Explica que una cola es una estructura FIFO donde los elementos se insertan al final y se extraen del principio, y define las operaciones básicas como crear, insertar, extraer, y revisar si está vacía o llena. También cubre el concepto de nodos enlazados y clases auto-referenciadas para implementar colas y listas enlazadas.
Este documento describe las estructuras de datos de pilas y colas múltiples. Explica cómo representar gráficamente conjuntos de pilas y colas usando vectores, y define las operaciones básicas como adicionar y eliminar elementos. También presenta las clases y métodos necesarios para implementar pilas y colas múltiples en Java.
Este documento resume conceptos sobre estructuras de datos como la recursividad y las colas. La recursividad se define como una técnica que permite que una función se llame a sí misma de forma repetida. Las colas son estructuras de datos FIFO donde los elementos se insertan por un extremo y se eliminan por el otro, siguiendo el orden de inserción. El documento explica las características y algoritmos básicos de creación, inserción y eliminación para colas lineales y circulares.
Una cola es una estructura de datos donde los elementos se agregan por un extremo (final) y se quitan por el otro (frente), siguiendo el orden FIFO (primero en entrar, primero en salir). Una cola se puede implementar usando un arreglo y variables para el frente y final. Operaciones comunes incluyen encolar (agregar), desencolar (quitar), cola vacía y cola llena. Las colas se usan comúnmente para almacenar elementos que necesitan procesarse según su orden de llegada, como en sistemas de imp
1) Las pilas y colas son estructuras de datos lineales que imponen restricciones en las posiciones de inserción y extracción de elementos. 2) Una pila sigue el principio LIFO donde el último elemento insertado es el primero en salir, mientras que una cola sigue el principio FIFO donde el primer elemento en entrar es el primero en salir. 3) Ambas estructuras tienen operaciones básicas como push/pop para pilas e insertar/leer para colas.
Este documento describe las estructuras de datos de colas. Explica que una cola tiene dos extremos, frente y final, y que los elementos se agregan al final y se eliminan del frente siguiendo el orden FIFO. También cubre las operaciones básicas de encolar y desencolar elementos y diferentes formas de implementar colas usando arreglos lineales, circulares o listas enlazadas.
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
El documento describe diferentes tipos de estructuras de datos lineales estáticas y dinámicas, incluyendo pilas, colas y listas enlazadas. Las estructuras estáticas tienen un tamaño fijo definido antes de la ejecución del programa, mientras que las estructuras dinámicas pueden cambiar de tamaño durante la ejecución. Las pilas siguen el principio LIFO, las colas siguen FIFO, y las listas enlazadas almacenan los elementos de forma no contigua usando nodos con punteros.
Este documento describe las estructuras de datos lineales como colas y pilas. Explica que una cola es una estructura FIFO donde los elementos se insertan al final y se extraen del principio, y define las operaciones básicas como crear, insertar, extraer, y revisar si está vacía o llena. También cubre el concepto de nodos enlazados y clases auto-referenciadas para implementar colas y listas enlazadas.
Una cola es una estructura de datos en la que los elementos se insertan por un extremo y se eliminan por el otro, siguiendo el orden FIFO (primero en entrar, primero en salir). Las colas se usan comúnmente para almacenar elementos que esperan su procesamiento, como personas en una fila. Las operaciones básicas de una cola son encolar para insertar elementos y desencolar para eliminarlos.
Una lista enlazada es una estructura de datos fundamental que consiste en nodos enlazados entre sí mediante referencias. Las listas se pueden implementar usando vectores o mediante enlaces entre nodos. Existen listas doblemente enlazadas donde cada nodo tiene dos referencias, una al nodo anterior y otra al siguiente. Una pila es una estructura LIFO donde los elementos se agregan y eliminan de un extremo, mientras que una cola es una estructura FIFO donde los elementos se agregan a un extremo y eliminan del otro.
Este documento describe las estructuras de datos pilas y colas. Explica que las pilas siguen el principio LIFO (último en entrar, primero en salir) mientras que las colas siguen el principio FIFO (primero en entrar, primero en salir). También describe las operaciones básicas como push, pop, enqueue y dequeue. Finalmente, discute formas de implementar pilas y colas utilizando arreglos en C/C++.
Una cola es una estructura de datos donde los elementos se insertan en un extremo y se eliminan en el otro extremo siguiendo el orden FIFO. Existen dos tipos principales de colas: lineales, donde los elementos se almacenan en una lista enlazada o array, y circulares, donde los elementos están enlazados de forma circular. Las operaciones básicas de una cola son insertar al final, eliminar del frente, y consultar el frente.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
El documento describe las secuencias y las pilas como un tipo abstracto de datos. Explica que una secuencia es una lista ordenada de elementos y define las operaciones básicas en pilas como crear, apilar, desapilar y consultar elementos. A continuación, presenta una implementación de pilas usando un vector y un puntero para almacenar los elementos de manera eficiente.
Este documento describe las colas, una estructura de datos lineal que sigue el principio "primero en entrar, primero en salir". Las colas solo permiten agregar elementos al final y eliminarlos del inicio. Se usan para almacenamiento temporal como buffers. La biblioteca STL incluye un adaptador queue que ofrece una interfaz de cola basada en deque, con métodos como push, pop, front y back.
Este documento presenta dos programas en C++ que ilustran el uso de estructuras de datos lineales como listas ligadas, pilas y colas. El primer programa compara números almacenados en direcciones de memoria utilizando apuntadores. El segundo programa implementa una lista ligada de clientes con nodos enlazados mediante punteros que permite agregar, mostrar y acceder a clientes individuales. El documento concluye que estas estructuras de datos facilitan la resolución de problemas al modelar información de forma gráfica y mediante código.
Este documento define ResultSet como una interfaz que proporciona acceso a los resultados de consultas ejecutadas. Describe cómo crear un ResultSet mediante métodos como executeQuery y cómo recuperar y manipular los datos de un ResultSet accediendo a sus filas y columnas. También resume las características y tipos de ResultSet, como su tipo de desplazamiento, concurrencia y habilidad para cerrar el cursor.
Este documento presenta los conceptos básicos de la morfología matemática y sus operaciones morfológicas como la dilatación, erosión, apertura y clausura. Explica cómo se pueden usar estas operaciones para aplicaciones como preprocesamiento de imágenes, detección de objetos y descripción de características. También cubre temas como elementos estructurantes, transformada hit-or-miss, adelgazamiento, engrosamiento y esqueletización.
Un modelo matemático es una construcción matemática abstracta y simplificada relacionada con una parte de la realidad y creada para un propósito particular.
Este documento presenta dos programas en C++ que ilustran el uso de estructuras lineales como listas ligadas, pilas y colas. El primer programa lee y compara datos almacenados en direcciones de memoria utilizando apuntadores. El segundo programa crea y muestra una lista ligada de clientes almacenando nombres y claves utilizando estructuras, apuntadores y funciones. La conclusión es que estos programas ayudan a entender cómo funcionan diferentes estructuras lineales de datos de forma gráfica y a través de código, lo cual será útil
Este documento presenta un manual básico sobre C/C++. Explica conceptos como declaración de variables, arreglos unidimensionales y bidimensionales, estructuras, funciones de bibliotecas, operadores de asignación, ficheros y funciones. También incluye ejemplos de resolución de problemas comunes y ejercicios prácticos evaluados para practicar los conocimientos adquiridos.
Este documento presenta información sobre estructuras de datos lineales como pilas, colas, dicolas y listas enlazadas. Explica las operaciones básicas de cada una y diferentes formas de implementarlas, incluyendo el uso de arreglos y listas enlazadas. También describe cómo implementar pilas y colas usando dicolas o listas enlazadas.
El documento describe las pilas, una estructura de datos lineal que solo permite agregar y eliminar elementos del final. Los elementos se agregan mediante "empujar" y se eliminan mediante "popping", siguiendo el principio LIFO (último en entrar, primero en salir). Las pilas se usan comúnmente para invertir el orden de elementos como líneas de un archivo.
El documento trata sobre arrays y matrices en C. Explica cómo declarar, inicializar y acceder a elementos de arrays unidimensionales y multidimensionales, así como cadenas de texto y arrays dinámicos. También cubre ordenamiento de arrays mediante algoritmos como burbuja y quicksort, y búsqueda binaria.
El documento presenta el código de una clase genérica ColaSimple que define los métodos básicos de una cola, como adicionar, eliminar, mostrar, etc. Luego se define una clase CSNormal que hereda de ColaSimple y la implementa de forma normal (no circular). Esta clase se utiliza para resolver tres ejercicios que involucran operaciones como encontrar el máximo elemento, eliminar datos alrededor del máximo, y encontrar datos comunes entre dos colas.
Una cola es una estructura de datos en la que los elementos se insertan por un extremo y se eliminan por el otro, siguiendo el orden FIFO (primero en entrar, primero en salir). Las colas se usan comúnmente para almacenar elementos que esperan su procesamiento, como personas en una fila. Las operaciones básicas de una cola son encolar para insertar elementos y desencolar para eliminarlos.
Una lista enlazada es una estructura de datos fundamental que consiste en nodos enlazados entre sí mediante referencias. Las listas se pueden implementar usando vectores o mediante enlaces entre nodos. Existen listas doblemente enlazadas donde cada nodo tiene dos referencias, una al nodo anterior y otra al siguiente. Una pila es una estructura LIFO donde los elementos se agregan y eliminan de un extremo, mientras que una cola es una estructura FIFO donde los elementos se agregan a un extremo y eliminan del otro.
Este documento describe las estructuras de datos pilas y colas. Explica que las pilas siguen el principio LIFO (último en entrar, primero en salir) mientras que las colas siguen el principio FIFO (primero en entrar, primero en salir). También describe las operaciones básicas como push, pop, enqueue y dequeue. Finalmente, discute formas de implementar pilas y colas utilizando arreglos en C/C++.
Una cola es una estructura de datos donde los elementos se insertan en un extremo y se eliminan en el otro extremo siguiendo el orden FIFO. Existen dos tipos principales de colas: lineales, donde los elementos se almacenan en una lista enlazada o array, y circulares, donde los elementos están enlazados de forma circular. Las operaciones básicas de una cola son insertar al final, eliminar del frente, y consultar el frente.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
Este documento describe diferentes estructuras de datos como listas, pilas y colas. Presenta sus definiciones, objetos del mundo real que pueden modelarse con ellas, y operaciones básicas. También propone TADs para representar estas estructuras y describe cómo los lenguajes de programación permiten implementarlas utilizando vectores, punteros y otras técnicas.
El documento describe las secuencias y las pilas como un tipo abstracto de datos. Explica que una secuencia es una lista ordenada de elementos y define las operaciones básicas en pilas como crear, apilar, desapilar y consultar elementos. A continuación, presenta una implementación de pilas usando un vector y un puntero para almacenar los elementos de manera eficiente.
Este documento describe las colas, una estructura de datos lineal que sigue el principio "primero en entrar, primero en salir". Las colas solo permiten agregar elementos al final y eliminarlos del inicio. Se usan para almacenamiento temporal como buffers. La biblioteca STL incluye un adaptador queue que ofrece una interfaz de cola basada en deque, con métodos como push, pop, front y back.
Este documento presenta dos programas en C++ que ilustran el uso de estructuras de datos lineales como listas ligadas, pilas y colas. El primer programa compara números almacenados en direcciones de memoria utilizando apuntadores. El segundo programa implementa una lista ligada de clientes con nodos enlazados mediante punteros que permite agregar, mostrar y acceder a clientes individuales. El documento concluye que estas estructuras de datos facilitan la resolución de problemas al modelar información de forma gráfica y mediante código.
Este documento define ResultSet como una interfaz que proporciona acceso a los resultados de consultas ejecutadas. Describe cómo crear un ResultSet mediante métodos como executeQuery y cómo recuperar y manipular los datos de un ResultSet accediendo a sus filas y columnas. También resume las características y tipos de ResultSet, como su tipo de desplazamiento, concurrencia y habilidad para cerrar el cursor.
Este documento presenta los conceptos básicos de la morfología matemática y sus operaciones morfológicas como la dilatación, erosión, apertura y clausura. Explica cómo se pueden usar estas operaciones para aplicaciones como preprocesamiento de imágenes, detección de objetos y descripción de características. También cubre temas como elementos estructurantes, transformada hit-or-miss, adelgazamiento, engrosamiento y esqueletización.
Un modelo matemático es una construcción matemática abstracta y simplificada relacionada con una parte de la realidad y creada para un propósito particular.
Este documento presenta dos programas en C++ que ilustran el uso de estructuras lineales como listas ligadas, pilas y colas. El primer programa lee y compara datos almacenados en direcciones de memoria utilizando apuntadores. El segundo programa crea y muestra una lista ligada de clientes almacenando nombres y claves utilizando estructuras, apuntadores y funciones. La conclusión es que estos programas ayudan a entender cómo funcionan diferentes estructuras lineales de datos de forma gráfica y a través de código, lo cual será útil
Este documento presenta un manual básico sobre C/C++. Explica conceptos como declaración de variables, arreglos unidimensionales y bidimensionales, estructuras, funciones de bibliotecas, operadores de asignación, ficheros y funciones. También incluye ejemplos de resolución de problemas comunes y ejercicios prácticos evaluados para practicar los conocimientos adquiridos.
Este documento presenta información sobre estructuras de datos lineales como pilas, colas, dicolas y listas enlazadas. Explica las operaciones básicas de cada una y diferentes formas de implementarlas, incluyendo el uso de arreglos y listas enlazadas. También describe cómo implementar pilas y colas usando dicolas o listas enlazadas.
El documento describe las pilas, una estructura de datos lineal que solo permite agregar y eliminar elementos del final. Los elementos se agregan mediante "empujar" y se eliminan mediante "popping", siguiendo el principio LIFO (último en entrar, primero en salir). Las pilas se usan comúnmente para invertir el orden de elementos como líneas de un archivo.
El documento trata sobre arrays y matrices en C. Explica cómo declarar, inicializar y acceder a elementos de arrays unidimensionales y multidimensionales, así como cadenas de texto y arrays dinámicos. También cubre ordenamiento de arrays mediante algoritmos como burbuja y quicksort, y búsqueda binaria.
El documento presenta el código de una clase genérica ColaSimple que define los métodos básicos de una cola, como adicionar, eliminar, mostrar, etc. Luego se define una clase CSNormal que hereda de ColaSimple y la implementa de forma normal (no circular). Esta clase se utiliza para resolver tres ejercicios que involucran operaciones como encontrar el máximo elemento, eliminar datos alrededor del máximo, y encontrar datos comunes entre dos colas.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
colasDef_1_2022.pdf
1. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
1.DEFINICIÓN
Una cola es una estructura de datos simple y se define como una colección de elementos
en la que sus componentes se introducen por un extremo (fin) y se eliminan por otro (ini)
[10]. Es decir, los elementos se eliminan en el mismo orden que se introdujeron. Debido
a esta característica las colas también reciben el nombre de estructuras FIFO (FIRST
INPUT FIRST OUTPUT. La Figura 1 muestra ejemplos prácticos de colas.
Figura No.1. a) Cola de personas b) Cola de automóviles
2 REPRESENTACIÓN GRÁFICA DE UNA COLA
2.1 EN VECTORES
Una cola puede representarse utilizando arreglos como muestra la Figura 2. Donde el
primer elemento ocupa la posición 3, el segundo elemento ocupa la posición 4 y así
sucesivamente.
Figura.2 Cola M con 4 elementos
2.2 EN LISTAS ENLAZADAS
Puede aplicarse el concepto de colas en listas enlazadas sin embargo debido a que existen
varios tipos de listas a continuación se proporciona una posible forma de representación
gráfica de colas en listas simplemente enlazadas (ver Figura No. 3). Donde el primer nodo
esta apuntado por p y el último nodo esta apuntado por q.
Figura No. 3 Representación de la cola G en lista enlazada simple
p q
3. OPERACIONES EN UNA COLA
Entre las operaciones básicas de una COLA se tienen:
l u n a
G
e s t u
v ini fin max
2. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
a) Adicionar un elemento a la cola
Figura No. 4 Adicionando el dato a en la cola normal
Z
b) Eliminar un dato
Figura No. 5 Elimina el dato s de la cola normal
4. ESTADOS ADICIONALES DE UNA COLA Normal
Además de las operaciones básicas de una cola, también se pueden diseñar métodos que
permitan reflejar otros estados adicionales como son: estado inicial (ver Figura No.6),
Estado de cola llena (ver Figura No. 7) y estado de cola vacía (ver Figura No. 8).
a) Estado inicial cola normal
Figura.6 Estado inicial
b) Cola normal llena
Figura No. 7 Cola llena
c) Cola normal vacía
Figura No. 8 Cola vacía
Si se observa la cola de la Figura No. 9 refleja el estado de cola llena. Sin embargo, la
cola tiene espacios disponibles lo que contradice el estado cola llena. A raíz de este tipo
de problemas donde no se aprovecha adecuadamente los espacios de memoria se definen
las estructuras de datos denominadas colas circulares que se describen a continuación.
Figura No. 9 Cola llena
5. COLAS CIRCULARES
Son estructuras que nos permiten utilizar los espacios de memoria de manera más
eficiente que una cola simple normal.
d i a
v ini fin max
t u s
v ini fin max
v ini=0, fin =0 max
e s e s t u d i e n
v ini fin max
v ini=0, fin =0 max
i e n
v ini fin max
3. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
5.1 REPRESENTACIÓN GRÁFICA DE UNA COLA CIRCULAR
Representaremos las colas circulares en vectores como muestra la Figura No. 9 utilizando
las posiciones de memoria desde 0. En tal sentido, el primer elemento de la cola está
ubicado después del valor que indica el puntero ini. Por ejemplo, en la cola circular de la
Figura No. 9 el primer elemento de la cola está ubicado en la posición 3 es decir ocupa
una posición después del puntero ini.
Figura No.9 Cola Circular K con un elemento
Donde:
La cola circular de capacidad max sólo podrá contenermax-1 elementos. Ello, debido
a que debe existir un espacio de memoria libre que va permitir distinguir el inicio y
el final de dicha cola.
Por otro lado, el primer elemento de la cola circular está ubicado una posición después
de su posición real.
En tanto que los punteros ini, fin se moverán en el sentido de las agujas del reloj, lo
que significa que tomarán valores como: 0,1,2,3,4,…,max-1,0,1,2,3,4,…, max-
1,0,1,2.3.4.5,… y así sucesivamente según la capacidad del vector. Dichos valores en
sí, se pueden generar aplicando la teoría de la aritmética modular que básicamente
está representada por la función mod que representa el módulo o residuo de una
división entera manifiesta por la siguiente expresión aritmética: x mod y = x-y*(x div
y). Finalmente, considerando el patrón de generación de los valores de los punteros
ini y fin se puede afirmar que es equivalente a representar los símbolos básicos de un
sistema de numeración de base max[12].
En tal sentido, si observamos la cola circular de la Figura No.10 esta cola tiene capacidad
para 8 elementos (max=8) sin embargo considerando que debe existir un espacio libre
(que va a distinguir el inicio y el final de la cola circular) se tiene la posibilidad de
almacenar tan solo 7 elementos.
skw g
0
1
3
4
5
0
6
7
0
max-1
ini
fin
K
b
4. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
Figura No.10 Cola circular H
5.2 OPERACIONES EN UNA COLA CIRCULAR
Adicionar un elemento, este proceso se ejecuta por el final haciendo avanzar el
puntero fin y luego agregando el dato especificado.
Eliminar un elemento, consiste en extraer el primer elemento de la cola, esto se logra
haciendo que el puntero ini avance una posición más de su posición actual de modo
que se alcance al primer elemento de la cola
5.2.3 ESTADOS ADICIONALES DE UNA COLA CIRCULAR
Estado inicial, lo definiremos haciendo que ini y fin apunten a 0 (ver Figura No.11)
Figura No. 11 Estado inicial de una cola circular
c
0
1
2
3
4
5
0
6
7
0
max-1
ini
fin
0
1
2
3
4
5
0
6
7
0
max-1
ini
fin
H
fin
5. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
Cola llena una cola está llena cuando el número de elementos es igual a la
capacidad de la cola menos 1 (max-1) ver Figura No. 12.
Figura No. 12 Cola Circular llena H
Cola vacía (ver Figura No. 13), se caracteriza porque la cantidad de elementos de la
cola es cero.
Figura No. 13 Cola vacía
Por tanto, se puede identificar la existencia de dos tipos de colas:
aquellas que no hacen un uso adecuado de los espacios de memoria y a las que
denominaremos colas simples normales.
y aquellas donde se hace una adecuada utilización del espacio de memoria y a las
que denominaremos colas simples circulares.
f
s
s
s
m
0
1
2
3
4
5
0
6
7
0
max-1
0
1
2
3
4
5
0
6
7
0
max-1
ini
fin
H
V
b
d
s
6. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
En tal sentido, se construye la jerarquía de clases (ver Figura No. 14), donde la clase
abstracta COLASIMPLE es la clase base a partir de la cual se generan las clases derivadas
CSNormal y CSCircular que permiten la creación de objetos de dichos tipos.
Figura No. 14 Jerarquía de clases para Objetos Cola.
6. IMPLEMENTACIÓN DEL TDA ColaSimple(abstract)
La implementación del TDA ColaSimple (abstract) se proporciona a continuación, donde
se puede apreciar que las operaciones son definidas como métodos abstractos que
posteriormente serán implementados en las clases derivadas.
package Cola;
public abstract class ColaSimple {
protected int ini,fin,max;
protected Object v[]=new Object[100];
ColaSimple(int ca)
{ini=0;fin=0;max=ca;}
abstract boolean esVacia();
abstract boolean esLlena();
abstract void adicionar(Object ele);
abstract Object eliminar();
abstract void mostrar();
abstract int nElem();
abstract boolean buscar(Object x);
}
6 IMPLEMENTACIÓN DEL TDA CSNORMAL
package Cola;
ColaSimple
(abstract)
int ini,fin,max
Object v[]
ColaSimple(cap)
abstract esVacia()
abstract esLlena()
abstract adicionar(x)
abstract Object eliminar()
abstract void mostrar()
abstract boolean buscar(Object x)
CSNormal
CSNormal(ca)
esVacia()
esLlena()
adicionar(x)
Object eliminar()
mostrar()
buscar(Object x)
CSCircular
CSCircular(ca)
esVacia()
esLlena()
adicionar(x)
Object eliminar()
mostrar()
boolean buscar(Object x)
8. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
{
boolean ban=false;
Object ele;
CSNormal aux=new CSNormal(max);
while((!esVacia())&&(ban==false))
{
ele=eliminar();
if(x.equals(ele)) ban=true;
aux.adicionar(ele);
}
while(!esVacia())
aux.adicionar(eliminar());
vaciar(aux);
return ban;
}
}
7 IMPLEMENTACIÓN DEL TDA CSCircular
package Cola;
public class CSCircular extends ColaSimple {
CSCircular(int ca)
{ super(ca); }
boolean esVacia()
{
if (nElem()==0)return true;
else return false;
}
boolean esLlena()
{
if (nElem()==(max-1))return true;
else return false;
}
void adicionar(Object x)
{
if (!esLlena()){
fin=(fin+1)%max;
v[fin]=x;
}
else System.out.println("Cola llena...");
}
Object eliminar()
{ Object x=null;
if(!esVacia()){
ini=(ini+1)%max; x=v[ini];
}
else System.out.println("Cola vacia...");
return x;
}
void mostrar()
{Object x; int n=nElem();
if(!esVacia())
{
while (n>0)
{
x=eliminar();n--;System.out.print("t"+x);adicionar(x);
9. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
}
}
else System.out.println("Cola vacia...");
}
void vaciar(CSCircular B)
{
while (!B.esVacia())
adicionar(B.eliminar());
}
int nElem()
{
return ((fin-ini+max)%max);
}
boolean buscar(Object x)
{
boolean ban=false;
Object ele;
int n=nElem();
while((n>0)&&(ban==false))
{
ele=eliminar();n--;
if(x.equals(ele)) ban=true;
adicionar(ele);
}
while(n>0)
{adicionar(eliminar());n--;}
return ban;
}
int nveces(Object ele)
{int nv=0,ne,i;Object x;
ne=nElem();
for(i=1;i<=ne;i++)
{x=eliminar();
if(x.equals(ele)) nv++;
adicionar(x);
}
return nv;
}
}
8. COLAS EN JAVA
Java incorpora interfaces y clases para el manejo de colas. Se define a una cola como una
colección de objetos que espera se procese de modo que las inserciones se realizan por el
final en tanto que las eliminaciones se efectúan por el comienzo.
En sí, Java proporciona una lista de clases con la que se puede implementar una cola entre
las que se tienen: AbstractQueue, ArrayBlockingQueue, ArrayDeque,
ConcurrentLinkedQueue, DelayQueue, LinkedBlockingQueue, LinkedBlockingDeque,
LinkedList, PriorityBlockingQueue, SynchronousQueue.Asimismo proporciona otras
subinterfaces: BlockingDeque<E>, BlockingQueue<E>, etc.
10. UNIVERSIDAD MAYOR “SAN ANDRÉS”
FACULTAD DE CIENCIAS PURAS Y NATURALES
CARRERA DE INFORMÁTICA
COLAS
Responsable: Lic. Victoria Hurtado Cerruto Gestión:1/2022
Una de las implementaciones de colas en Java es a través de la clase LinkedList como
se observa en el siguiente ejemplo.
Ejemplo. Utilización de una cola utilizando la clase LinkedList
package cola;
import java.util.LinkedList;
import java.util.Scanner;
public class ColaJava {
public static void main(String[] args) {
LinkedList a=new LinkedList();
int i;
Scanner lee=new Scanner(System.in);
for(i=1;i<=5;i++)
{ System.out.println("Introduzca un nombre");
a.offer(lee.next());
}
while (a.peek()!=null)
System.out.println(a.poll());
}
}
Entre algunos métodos asociados a la clase LinkedList se tienen los descritos brevemente
en la Tabla No.1:
Tabla No. 1 Algunos métodos asociados a LinkedList
Método Descripción
offer(x) Permite insertar x en la cola si es posible, caso contrario devuelve false.
poll() Permite eliminar el primer elemento de la cola. En caso de que la cola este vacía devuelve null
peek() permite examinar el primer elemento de la cola sin eliminarlo
Por otro lado, Java también incorpora la interface Queue que es un subtipo de la interface
java.util.Collection que representa una lista ordenada de objetos similar a una lista pero
que se utiliza de diferente forma es decir las inserciones se efectúan por el final en tanto
que la eliminaciones se efectúan por el comienzo. Debido a que Queue es una interface
y no una clase se precisa utilizar alguna clase ya implementada en tal sentido utilizaremos
la clase LinkedList (ver Problema No. 5.7).
9. APLICACIONES
Entre las aplicaciones de colas se distinguen:
Simulación de procesos. Ejemplo: simulación de una cola formada frente a un
Cajero automático, simulación de colas de atención y espera de clientes, etc. Otra
aplicación importante de las colas de prioridad es la simulación por eventos [7].
Colas de impresión. Cuando existe una sola impresora para atender a varios
usuarios quienes al mismo tiempo pueden requerir la impresión de trabajos razón
por la que se forma una cola de requerimientos para ser impresas y los cuales se
atenderán en el orden que se solicitó el servicio.
Sistemas de tiempo compartido. Donde varios usuarios comparten ciertos
recursos los cuales se asignan a los procesos que están en la cola de espera
suponiendo que todos tienen la misma prioridad.