Sei sulla pagina 1di 18

COLAS (QUEUES) Y PILAS (STACKS)

                   
Slides Colas y Pilas  by Juan Carlos Mantilla Gómez is licensed under a Creative Commons Reconocimiento-
NoComercial-SinObraDerivada 4.0 Internacional License.
Puede hallar permisos más allá de los concedidos con esta licencia en https://savio.utb.edu.co/
Qué es una estructura COLA
• Es un tipo especial de estructura de datos lineal ( LISTA)
• Método de acceso F.I.FO. ( First In First Out)

ELIMINACIÓN DE
ESTRUCTURA DE DATOS INSERCIÓN DE DATOS ACCESO A ELEMENTOS
ELEMENTOS

En cualquier posición de En cualquier posición de Todos los elementos son


Listas enlazadas la estructura la estructura accesibles

Solo se accede al
Pilas Por el extremo Tope Por el extremo Tope elemento que ocupe el
extremo Tope

Solo se accede al
Colas Por el extremo Final Por el extremo Frente elemento que ocupe el
extremo Frente
COLA:
• Estructura lineal finita que opera con filosofía F.I.FO.
(P.E.P.S)
• Secuencia de elementos e1, e2, e3 …en ( n>=0 )
• Si n = 0 la cola está vacía
Principales operaciones
VACÍA
UTILIDAD: verifica si una determinada cola está vacía o no.
ENTRADAS: la cola que se va a verificar.
SALIDAS: valor booleano que indique si la cola está vacía o no.
PRECONDICIÓN: la cola que se desea verificar existe.
POSTCONDICIÓN: ninguna, la estructura no se modifica.

LLENA
UTILIDAD: verifica si una cola determinada se encuentra llena o no.
ENTRADAS: la cola que se va a verificar.
SALIDAS: valor booleano que indique si la cola está llena o no.
PRECONDICIÓN: la cola por verificar existe.
POSTCONDICIÓN: ninguna, la estructura no se modifica.
ENCOLAR (INSERTAR) ELEMENTO (INSERT)
agrega un elemento a una cola. Debe quedar a continuación del
UTILIDAD: último
ENTRADAS: la fila a la que se agregará el elemento y el elemento por agregar.
SALIDAS: la fila con un elemento adicional.
PRECONDICIÓN: la fila está creada y no está llena.
la fila queda con un elemento adicional, agregado por el extremo del
POSTCONDICIÓN: final de la fila.

DESENCOLAR (EXTRAER) ELEMENTO (REMOVE)


UTILIDAD: elimina el elemento del frente de cola.
ENTRADAS: la cola a la que se va a quitar un elemento.
SALIDAS: la cola con un elemento menos y el elemento que se eliminó.
PRECONDICIÓN: la cola está creada y no está vacía.
la cola queda con un elemento menos, eliminado por el extremo del
POSTCONDICIÓN: frente de la fila
VACÍA
UTILIDAD: verifica si una determinada cola se encuentra vacía o no.
ENTRADAS: la cola que se va a verificar.
SALIDAS: valor booleano que indique si la cola está vacía o no.
PRECONDICIÓN: la cola por verificar existe.
POSTCONDICIÓN: ninguna, la estructura no se modifica.

LLENA
UTILIDAD: verifica si una fila determinada se encuentra llena o no.
ENTRADAS: la fila que se va a verificar.
SALIDAS: valor booleano que indique si la fila está llena o no.
PRECONDICIÓN: la fila por verificar existe
POSTCONDICIÓN: ninguna, la estructura no se modifica
Como representar una cola
Utilizando memoria estática
a. Utilizando un arreglo unidimensional.
– Requiere tener una variable que apunte al final de la
cola
– Al eliminar un elemento los restantes deben ser
“movidos” una posición hacia el frente.
b. Usando un arreglo lineal con dos apuntadores (frente
y final)
c. Usando un arreglo circular con 2 apuntadores.
Como representar una cola
Utilizando memoria dinámica

a. Utilizando una lista enlazada


– Cada nodo de la lista almacena uno de los valores en
cola
– Se requieren dos apuntadores adicionales para
señalar el elemento frente y el elemento fin
Una aplicación directa
Las Colas de prioridad

• Extensión del concepto. Se basa en


– Orden de salida
– Orden de llegada
– Orden de prioridad
• No necesariamente es FIFO
• un elemento que ingresa a la cola se posicionará al
final del segmento de elementos de su misma
prioridad
Una aplicación directa
Las Colas de prioridad

• El elemento con mayor prioridad se procesa primero


• Dos elementos de igual prioridad se procesan en el
orden en que llegaron siguiendo FIFO.

Y,0 X,0 F,1 A,2 B,3 C,3


Encolar()
Desencolar()
(elemento, prioridad)

Frente Último
Prioridad 1
Y X

Elemento a procesar Prioridad 2


F

Prioridad 3
A

Prioridad 4
B
PILAS ( STACKS)
Que es una PILA o STACK
• conjunto ordenado de objetos los cuales pueden
agregarse o extraerse (uno a la vez) por un solo lado.
• Estructura de datos lineal, finita
• Se utiliza conforme a la filosofía U.E.P.S : El Último que
Entró en la pila es el Primero en Salir. (También se usa
el término L.I.F.O Last Input First Output)
• Se debe llevar registro de dos elementos : El del fondo
(Bottom) y el del tope (Top)
TOP
TDA PILA

Depende de la aplicación de la pila


ELEMENTOS
ESTRUCTURA • lineal
DOMINIO • Tantos elementos como se necesite, de acuerdo con la
representación que se haya definido.
Algunas posibles operaciones
APILAR (PUSH)
Agregar un elemento a la pila
ENTRADA: Una pila existente y un elemento a agregar
SALIDA: La pila con un elemento más
PRECONDICIÓN: La Pila debe existir
POSTCONDICIÓN: El elemento adicionado debe quedar en el tope

DESAPILAR(POP)
Elimina un elemento de la pila
ENTRADA: Una Pila de la que se quitará un elemento
La pila con un elemento menos. El elemento que
SALIDA: se retiró de la pila
PRECONDICIÓN: La pila no debe estar vacía
POSTCONDICIÓN: La pila queda con un elemento menos
Algunas posibles operaciones
VACIA
Verifica si una pila está vacía o no
ENTRADA: Una Pila a ser verificada
Verdadero si la pila no contiene elementos. Falso,
SALIDA: de lo contrario
PRECONDICIÓN: La Pila a verificar existe
POSTCONDICIÓN: Ninguna

LLENA
Verifica si una pila está llena o no
ENTRADA: Una Pila a ser verificada
SALIDA: Verdadero si la pila está llena.
PRECONDICIÓN: La Pila a verificar existe
POSTCONDICIÓN: Ninguna
Taller de clase
• A partir de la definición de lista enlazada implemente
una estructura de tipo COLA, incluyendo las siguientes
operaciones:
• ENCOLAR (agregar un nodo al final)
• DESENCOLAR (eliminar el elemento del frente)
• LISTAR ( desplegar todos los nodos de la cola
• Cada nodo debe almacenar el NOMBRE de un proceso (
string de 10 caracteres)

Potrebbero piacerti anche