ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
Pilas y colas
1. Pilas y Colas
Hernández Salazar Alma
González García Brenda Stephanie
Pérez González Luis Alberto
Villa Méndez Edgar Adrián
Villegas Titla Jorge Ramsés
Ríos Álvarez Jesús Alberto
2. Colas
• Una cola es una estructura de datos, caracterizada por ser una
secuencia de elementos en la que la operación de
inserción push se realiza por un extremo y la operación de
extracción pop por el otro.
• Los objetos son tomados como datos que se almacenan y se
guardan mediante colas para su posterior procesamiento
3. • También es llamado estructura FIFO (del inglés
First In First Out), debido a que el primer
elemento en entrar será también el primero
en salir.
4. Representación de las Colas
• Un elemento se inserta en la cola (parte final) de la lista y se
suprime o elimina por la frente (parte inicial, cabeza) de la
lista. Las aplicaciones utilizan una cola para almacenar
elementos en su orden de aparición o concurrencia
5. • Los elementos se eliminan (se quitan) de la cola en el mismo
orden en que se almacenan y, por consiguiente, una cola es
una estructura de tipo FIFO (First Input First Output) porque
el primer elemento que entra a la cola es el primero que sale.
• Las colas se representan por listas enlazadas o por arrayas. Se
necesitan dos punteros: frente (f) y final(r), y la lista o arraya
de “n” elementos
6. Operaciones básicas de las colas
Las operaciones básicas de las colas
son:
Crear: se crea la cola vacía.
Encolar (añadir, entrar, push): se
añade un elemento a la cola. Se
añade al final de esta.
Desencolar (sacar, salir, pop): se
elimina el elemento frontal de la
cola, es decir, el primer elemento
que entró.
Frente (consultar, front): se
devuelve el elemento frontal de
la cola, es decir, el primero
elemento que entró.
7. Aplicaciones de las colas
• Esta estructura de datos se usa en muchos sistemas
operativos, por ejemplo Unix, para llevar el control
• de la ejecución de procesos, cada proceso en el
sistema es almacenado en una lista y esta se va
• recorriendo, dándole un pequeño tiempo del
microprocesador a cada proceso, durante la fracción
de segundo de cada proceso este asume que tiene el
control total del procesador.
8.
9. Cola Circular o Anillo
Una cola circular o anillo es
una estructura de datos en
la que los elementos están
de forma circular y cada
elemento tiene un sucesor y
un predecesor. Los
elementos pueden
consultarse, añadirse y
eliminarse únicamente
desde la cabeza del anillo
que es una posición
distinguida. Esta avanza en
el sentido de las agujas del
reloj.
En la figura mostrada muestra una cola circular
con un solo dato almacenado. La variable
“final” es la posición en donde se hizo la última
inserción. Después que se ha producido una
inserción, final se mueve circularmente a la
derecha.
10. Cola de prioridades
• Una cola de prioridades se utiliza para que los elementos se atienden en
el orden indicado por una prioridad asociada a cada uno. Si varios
elementos tienen la misma prioridad, se atenderán de modo convencional
según la posición que ocupen. Este tipo especial de colas tienen las
mismas operaciones que las colas, pero con la condición de que los
elementos se atienden en orden de prioridad.
11. Doble cola (Bicola)
• Es un tipo de cola especial que permiten la inserción y eliminación
de elementos de ambos extremos de la cola. Puede representarse a
partir de un vector y dos índices, siendo su representación más
frecuente una lista circular doblemente enlazada. Todas las
operaciones de este tipo de datos tienen coste constante.
• Existen dos tipos de la doble cola:
• · Doble cola de entrada restringida: acepta inserciones solo al
final de la cola.
• · Doble cola de salida restringida: acepta eliminaciones solo al
frente de la cola
12. Tipo cola implementado como arreglo
• La figura de arriba, muestra la forma de implementar una cola,
como arreglo, en la que cada casilla, representa una estructura
compuesta por el tipo de dato a guardar (o bien otra estructura).
• Las variables q.rear y q.front, se van modificando cada vez que
añadimos o eliminamos datos de nuestra cola.
• Para determinar la cantidad de elementos en cualquier momento
utilizamos la expresión:
• Cant=q.rear-q.front+1
13. Pilas
• A las pilas se les llama también listas LIFO (last-in
first-out) o listas “primero en entrar, primero en
salir”. En el TDA Pila no se definen operaciones de
posicionamiento en la pila. Esto es debido a que
todas las operaciones de acceso se realizan en la
misma posición, el tope de la pila.
14. • En cada momento sólo se tiene acceso a la
parte superior de la pila, es decir, al último
objeto apilado (denominado TOS, Top of
Stack en inglés).
15. • Las pilas suelen emplearse en los siguientes
contextos:
• Evaluación de expresiones en notación
postfija (notación polaca inversa).
• Reconocedores sintácticos de lenguajes
independientes del contexto
• Implementación de recursividad.
16. Operaciones
• Una pila cuenta con 2 operaciones imprescindibles: apilar y
desapilar, a las que en las implementaciones modernas de
las pilas se suelen añadir más de uso habitual.
• Crear: se crea la pila vacía. (constructor)
• Tamaño: regresa el número de elementos de la pila. (size)
• Apilar: se añade un elemento a la pila.(push)
• Desapilar: se elimina el elemento frontal de la pila.(pop)
• Cima: devuelve el elemento que esta en la cima de la pila.
(top o peek)
• Vacía: devuelve cierto si la pila está vacía o falso en caso
contrario (empty).
17. Implementación
• Un requisito típico de
almacenamiento de una
pila de n elementos es
O(n). El requisito típico de
tiempo de O(1) las
operaciones también son
fáciles de satisfacer con
un array o con listas
enlazadas simples.