Está en la página 1de 46

Algoritmos y estructuras

de datos
Unidad 2 Estructuras dinámicas de
datos (parte 2) Pilas y Colas

Prof. Felipe de Jesús Chiu Martínez Matricula: 019800614 mayo, 2022


Agenda
Estructura de la materia
de hoy
2. Estructuras dinámicas de datos (segunda parte)
Introducción
Objetivo
2.7 Pilas
2.8 Ejemplo de pilas
2.9 Colas
2.10 Ejemplo de colas
Conclusiones
Pregunta de investigación
Actividades semana 4
Tarea 4
Recursos 4
Foro 2 Actividad Colaborativa (segunda etapa)
Examen y exámenes autocalificables 4
Puntos Extras
Evidencias de aprendizaje 4
Cierre
Estructura de la materia
Semana 1 Semana 3
y semana 2 y Semana 4
Unidad 2
Unidad 1
Estructuras Dinámicas
Estructuras
de Datos Semana 5
Estáticas de Datos
Unidad 3
Recursión

Semana 6
y Semana 7

Unidad 4
Árboles
Unidad 2
Estructuras
dinámicas de datos
(segunda parte)
Introducción
¿Cómo las estructuras de datos dinámicas optimizan
el uso de la memoria?
Una de las aplicaciones de la memoria dinámica son las
estructuras dinámicas de datos, las cuales permiten crear
estructuras que se adapten a las necesidades de programación.
En muchas circunstancias se requieren estructuras cuyo tamaño
pueda ser modificado durante la ejecución de una aplicación y
esto se puede lograr gracias al uso de punteros o variables que
almacenan direcciones de memoria, con las cuales se manipulan
los nodos o elementos que contienen las estructuras.

En esta unidad conocerás como se conforman las estructuras


dinámicas, así como las operaciones que se pueden realizar con
ellas.
Objetivos
Emplear las estructuras dinámicas de datos,
mediante la aplicación de los diferentes procesos de
implementación, para solucionar problemas de
almacenamiento dinámico de datos en memoria.

• Distinguir la definición y características de las


estructuras, algoritmos y formas de
implementación de la programación dinámica en
pilas y colas.

• Solucionar problemas de manipulación de datos


que requieran la selección e implementación de
estructuras dinámicas de datos.
¿Qué es una pila?
2.Estructuras dinámicas de datos
2.7 Pilas
Una pila es una versión restringida de una lista enlazada; una pila
recibe nuevos nodos y libera nodos solo desde su parte superior.
Por esta razón a una pila se le conoce como una estructura de
datos UEPS (último en entrar, primero en salir).

Las operaciones principales


para manipular una pila son
push (meter) y pop (sacar).
La operación meter agrega un
nuevo nodo a la parte superior
de la pila, y devuelve el
elemento de datos del nodo
que se extrajo.
2.Estructuras dinámicas de datos
2.7 Pilas
Las pilas tienen muchas aplicaciones interesantes. Por ejemplo,
cuando un programa llama a un método, éste debe saber cómo
regresar al programa que lo llamó, por lo que la dirección de
retorno se mete en la pila de llamadas a métodos. Si ocurre
una serie de llamadas a métodos, los valores de retorno
sucesivos se meten en la pila, en el orden “último en entrar,
primero en salir“, de manera que cada método pueda regresar
al objeto que lo llamó. Las pilas soportan las llamadas
recursivas a métodos, de la misma forma que soportan las
llamadas convencionales no recursivas a los métodos.
2.Estructuras dinámicas de datos
2.7 Pilas
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

• Su nombre se deriva de la
metáfora de una pila de Entra Sale

platos en una cocina.


Tope
• La inserción y extracción
de elementos de la pila
siguen el principio LIFO
(last-in-first-out).

• El último elemento en
entrar es el único accesible
en cada momento.
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

• Una pila (stack) es una colecciona ordenada de


elementos en la cual los datos se insertan o se retiran
por el mismo extremo llamado “parte superior” de la pila.
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

Existe solamente un lugar en donde cualquier elemento


puede ser agregado a la pila. Después de haber insertado el
nuevo elemento, G ahora es el elemento en la cima.
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

Basta indicar que sea retirado un elemento. No


podemos decir “retirar C”, porque C no está en la cima
de la pila.
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

1 4

1 1 1 1 1

4 4 4 4 4 4

push(4) push(1) push(1) pop() push(4) pop()

La dinámica de la pila, es decir, la manera en cómo entran


y salen los datos a la estructura de datos se denomina fifo
(first input, first output)
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

Utilidad de las Pilas


El concepto de pila es muy importante en computación y
en especial en teoría de lenguajes de programación. En
lenguajes procedurales como Pascal o C, la pila es una
estructura indispensable, debido a las llamadas a función.
Por que?
Cuando ocurre una llamada a alguna función, el estado
global del sistema se almacena en un registro y éste en
una pila. Cuando se termina de ejecutar algún
procedimiento, se recupera el registro que está en la cima
de la pila.

Otras aplicaciones de las Pilas?


2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

Utilidad de las Pilas


El concepto de pila es muy importante en computación y
en especial en teoría de lenguajes de programación. En
lenguajes procedurales como Pascal o C, la pila es una
estructura indispensable, debido a las llamadas a función.
Por que?
Cuando ocurre una llamada a alguna función, el estado
global del sistema se almacena en un registro y éste en
una pila. Cuando se termina de ejecutar algún
procedimiento, se recupera el registro que está en la cima
de la pila.

Otras aplicaciones de las Pilas?


2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

Aplicaciones de las pilas


• Navegador Web
– Se almacenan los sitios previamente visitados
– Cuando el usuario quiere regresar (presiona el botón
de retroceso), simplemente se extrae la última
dirección (pop) de la pila de sitios visitados.

• Editores de texto
– Los cambios efectuados se almacenan en una pila
– Usualmente implementada como arreglo
– Usuario puede deshacer los cambios mediante la
operación “undo”, la cual extraer el estado del texto
antes del último cambio realizado.
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas
librerías

Definición clase pila

Insertar nuevos nodos


2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas

Extracción de nodos
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas
2.Estructuras dinámicas de datos
2.8 Ejemplo de Pilas
¿Qué es una cola?
2.Estructuras dinámicas de datos
2.9 Colas

La cola es una estructura de datos de uso común.


Una cola es similar a una fila para pagar en un
supermercado; el cajero atiende primero a la
persona que esta al principio de la fila. Otros clientes
entran a la fila solo por su parte final y esperan a
que se les atienda.
2.Estructuras dinámicas de datos
2.9 Colas

Los nodos de una cola se eliminan desde el principio


(o frente) de la misma y se insertan sólo al final de
ésta. Por esa razón, una cola es una estructura de
datos PEPS (primero en entrar primero en salir).
Las operaciones para insertar y eliminar se conocen
como enqueue (Agregar a la cola) y dequeue
(eliminar de la cola).
2.Estructuras dinámicas de datos
2.9 Colas
Las colas tienen muchas aplicaciones en los sistemas
computacionales. La mayoría de las computadoras
tienen un solo procesador , por lo que solo pueden
atender una aplicación a la vez. Cada aplicación que
requiere tiempo del procesador se coloca en una cola.
La aplicación al frente de la cola es la siguiente que
recibe atención. Cada aplicación avanza en forma
gradual al frente de la cola, a medida que las
aplicaciones al frente reciben atención.
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
La estructura de datos cola
En una cola hay dos extremos, uno es llamado la parte
delantera y el otro extremo se llama la parte trasera de la
cola. En una cola, los elementos se retiran por la parte
delantera y se agregan por la parte trasera.
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
La estructura de datos cola
• Su nombre se deriva de la
metáfora de una cola de Entra

personas en una taquilla.


cola

• La inserción y extracción
de elementos de la cola
siguen el principio FIFO
(first-in-first-out).
frente

• El elemento con más


tiempo en la cola es el que Sale
puede ser extraído.
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas

Operaciones en una cola


• Las operaciones básicas de una cola son “enqueue”
(meter) y “dequeue” (sacar)
– enqueue: añade un nuevo elemento al final de la cola
– dequeue: elimina (saca) el primer elemento de la cola

• Otras operaciones usualmente incluidas en el tipo


abstracto COLA son:
– isEmpty (estáVacia): verifica si la cola está vacía
– isFull (estáLlena): verifica si la cola está llena
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas

Ejemplo de operaciones en una cola

Cola vacía

enqueue(a)
a

a b enqueue(b)

a b c enqueue(c)

b c dequeue()
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas

Aplicaciones de las colas


• En general, operaciones en redes de
computadoras.
– Trabajos enviados a una impresora
– Solicitudes a un servidor.

• Clientes solicitando ser atendidos por una


telefonista.

• Mas aplicaciones de las estructuras tipo cola?


2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
Implementación de la estructura cola
• De manera similar a las pilas, las colas definen una estructura no
estándar, de manera que se debe crear un nuevo tipo de dato, el
tipo cola, que debe tener los siguientes elementos:
• Un arreglo de n elementos de algún tipo específico, puede
incluso ser un tipo estándar o no.
• Un número que indica el elemento que está en la posición del
frente de la cola.
• Un número que indica el elemento que está en la posición
trasera de la cola.
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
using System;
using System.Collections.Generic;
using System.Linq; bibliotecas
using System.Text;
namespace ListasTipoCola1
{
class Cola
{
class Nodo
{
public int info;
public Nodo sig;
}

private Nodo raiz,fondo;

public Cola()
{
raiz=null;
fondo=null; Inicialización de valores
}
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
public bool Vacia ()
{
if (raiz == null) ¿cola vacía?
return true;
else
return false;
}
public void Insertar (int info)
{
Nodo nuevo;
nuevo = new Nodo ();
nuevo.info = info;
nuevo.sig = null;
if (Vacia ())
{ Inserción de nodos nuevos
raiz = nuevo;
fondo = nuevo;
}
else
{
fondo.sig = nuevo;
fondo = nuevo;
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
public int Extraer ()
{
if (!Vacia ())
{
int informacion = raiz.info;
if (raiz == fondo) Extracción de nodos
{
raiz = null;
fondo = null;
}
else
{
raiz = raiz.sig;
}
return informacion;
}
else
return int.MaxValue;
}
2.Estructuras dinámicas de datos
2.10 Ejemplos de Colas
2.Estructuras dinámicas de datos
Conclusiones
• Se ha demostrado que las estructuras de datos tipo
pila y cola son versiones restringidas de las listas.
Para las pilas, vimos que las inserciones y
eliminaciones se realizan solo en la parte superior;
es por ello que las pilas se conocen como
estructuras de datos UEPS (último en entrar
primero en salir) o LIFO que son sus siglas en inglés
(last in, first out).

• Para las colas, que representan filas de espera,


vimos que las inserciones se realizan en la parte
final y las eliminaciones en la parte inicial; es por
ello que las colas se conocen como estructuras de
datos PEPS (primero en entrar primero en salir) o
FIFO que son sus siglas en inglés (first in, first
out).
2.Estructuras dinámicas de datos
Pregunta de investigación
1. Considere la siguiente estructura de una pila:
10 ¿Cómo quedaría la estructura después de aplicar las siguientes operaciones:
push(10), push(20),pop()
20
Seleccione una opción:
30 a) 20,10,10,20,30,40,50
b) 10,10,20,30,40,50
40 c) 10,20,10,20,30,40,50
d) 10,20,30,40,50,10
50

2. Considere la misma estructura pero ahora como una cola:


1010 20 30 40 50
¿Cómo quedaría la estructura después de aplicar las siguientes operaciones:
enqueue(10), enqueue(20),dequeue()

Seleccione una opción:


a) 10,20,10,20,30,40,50
b) 10,10,20,30,40,50
c) 10,20,30,40,50,10,20
d) 20,10,20,30,40,50
2.Estructuras dinámicas de datos
Actividades semana 4
2.Estructuras dinámicas de datos
Actividades semana 4
2.Estructuras dinámicas de datos
Actividades semana 4
2.Estructuras dinámicas de datos
Actividades semana 4
Foro 2 (segunda etapa)

Segunda etapa (del 24 al 30 de mayo):


2.Estructuras dinámicas de datos
Actividades semana 4
Examen 4

Modalidad de exámenes | Semana 4 miércoles, 1° de junio de 2022, 23:55

Exámenes autocalificables
2.Estructuras dinámicas de datos
Actividades semana 4
2.Estructuras dinámicas de datos
Actividades semana 4
Evidencias de aprendizaje
MUCHAS GRACIAS
POR TU ATENCION

También podría gustarte