Está en la página 1de 29

Licenciatura en Informática

Programación (Estructura de Datos)

Julio, 2022

Parte X
2
Pilas y Colas en
Estructura de Datos
Colas

l Nos encontramos en una situación poco usual.


l Los primeros computólogos en castellano fueron
mexicanos.
l Denominaron “colas” a la estructura de datos
que realiza operaciones con aquellos datos que
primero entran, para salir primero.
l A esta estructura se le conoce en el idioma
inglés como “pipe”; de hecho, así se le bautizó.

4
Colas

l La traducción literal de ”pipe” es tubería.

5
Colas

6
Colas

7
Colas

8
Colas

l Una cola, también conocido como FIFO (First


Input, First Output) es un método para manejar
estructuras de datos donde el primer elemento
se procesa primero y el elemento más nuevo se
procesa en último lugar.
l Lo opuesto a una pila.

9
Colas

l Veamos un ejemplo.

10
Colas

l Hay un mostrador de tortillas donde la gente


viene, compra sus tortillas y se va.
l Las personas ingresan a una fila (cola) para
llegar al mostrador de manera organizada.
l La persona que ingresa primero a la cola,
obtendrá las primeras tortillas y abandonará la
cola.
l La siguiente persona que ingrese a la cola
recibirá la siguiente pila de tortillas después de
la persona que está frente.
11
Colas

l De esta manera, la persona que ingrese en


último lugar a la cola, será el último en recibir
sus tortillas.
l Por lo tanto, la primera persona que ingresa a la
cola compra primero, y la última persona que
ingresa a la cola compra en último lugar.

12
Colas

13
Colas

l De igual forma lo podemos ver al comprar unos


boletos para asistir a una obra de teatro, o cine.

14
Colas

l La diferencia es la siguiente:
l Hay un mostrador de boletos donde la gente viene,
compra sus boletos y se va.
l Las personas ingresan a una fila (cola) para llegar al
mostrador de boletos de manera organizada.
l La persona que ingrese primero a la cola, obtendrá
el boleto primero y abandonará la cola.
l La siguiente persona que ingrese a la cola recibirá
el boleto después de la persona que está frente a él.

15
Colas

l La diferencia es la siguiente:

l De esta manera, la persona que ingrese en último


lugar a la cola, será el último en recibir los boletos.
l Por lo tanto, la primera persona que ingresa a la
cola obtiene el boleto primero y la última persona
que ingresa a la cola obtiene el boleto en último
lugar.

16
Colas

17
Colas

l La técnica FIFO (PEPS, Primeras Entradas,


Primeras Salidas), se aplica en.
l Estructuras de datos: ciertas estructuras de datos
como Queue (cola) y otras variantes de Queue
utilizan el enfoque FIFO para procesar datos.
l Programación de disco: los controladores de disco
pueden usar FIFO como un algoritmo de
programación de disco para determinar el orden en
el que atender las solicitudes de E / S de disco.

18
Colas

l La técnica FIFO (PEPS, Primeras Entradas,


Primeras Salidas), se aplica en.

l Comunicaciones y redes: puentes, conmutadores y


enrutadores de redes de comunicación utilizados en
redes informáticas utilizan FIFO para almacenar
paquetes de datos en ruta hacia su próximo destino.

19
Colas

l Las operaciones que se realizan son.

l enQueue(): Agregar elementos.


l deQueue(): Eliminar elementos.
l isEmpty(): Cola vacía.
l getFront(): Traer el primer elemento que entró.
l Size(): Tamaño actual.

20
Ahora
Un pequeño caso

Muestra warnings

21
Colas
#include <stdio.h>
# define SIZE 100
void enqueue();
void dequeue();
void show();
int inp_arr[SIZE];
int Rear = - 1;
int Front = - 1;
main()
{
int ch;
while (1)
{
printf("1.Poner en Cola\n");
printf("2.Sacar de Cola\n");
printf("3.Mostrar Elementos en Cola\n");
printf("4.Salir\n");
printf("Seleccione su opción : ");
scanf("%d", &ch);

22
Colas
switch (ch)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
case 3:
show();
break;
case 4:
exit(0);
default:
printf("Elección incorrecta \n");
}
}
}

23
Colas
void enqueue() //En Cola
{
int insert_item;
if (Rear == SIZE - 1)
printf("Sobrecarga \n");
else
{
if (Front == - 1)

Front = 0;
printf("Elemento a ser insertado en la Cola\n : ");
scanf("%d", &insert_item);
Rear = Rear + 1;
inp_arr[Rear] = insert_item;
}
}

24
Colas
void dequeue() //Sacar de la Cola
{
if (Front == - 1 || Front > Rear)
{
printf("Bajo Flujo \n");
return ;
}
else
{
printf("Elemento a borrar de la Cola: %d\n", inp_arr[Front]);
Front = Front + 1;
}
}

25
Colas
void show() //Mostrar Elementos
{

if (Front == - 1)
printf("Cola Vacía \n");
else
{
printf("Cola: \n");
for (int i = Front; i <= Rear; i++)
printf("%d ", inp_arr[i]);
printf("\n");
}
}

26
Colas

27
Ahora
No hay Tarea Adicional

28
Ahora
No hay Tarea Adicional

29

También podría gustarte