estructuras de datos - lsc.fie.umich.mxlsc.fie.umich.mx/~pedro/ed/data_structuresp.pdf ·...

36
Outline Introducci´ on Cola Pila Aplicaciones de colas y pilas Ejemplo Estructuras de Datos Pedro Ch´ avez Lugo 15 de marzo de 2010 Pedro Ch´ avez Lugo Estructuras de Datos

Upload: others

Post on 24-Sep-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Estructuras de Datos

Pedro Chavez Lugo

15 de marzo de 2010

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

1 Introduccion

2 Cola

3 Pila

4 Aplicaciones de colas y pilas

5 Ejemplo

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Tipo de Dato Abstracto

Un tipo de dato abstracto (TDA), corresponde a un conjunto devalores y un conjunto de operaciones sobre tales valores.

Ejemplos de TDA

Enteros.

Reales.

Booleanos.

Listas.

etc.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Tipo de Dato Abstracto

Tipos de datos primitivos

La gran mayorıa de los tipos de datos primitivos (int, float, double,etc.) estan definidos en los registros de las actuales arquitecturasde procesador.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Tipo de Dato Abstracto

Tipos de datos primitivos

La gran mayorıa de los tipos de datos primitivos (int, float, double,etc.) estan definidos en los registros de las actuales arquitecturasde procesador.

Tipo de Dato Abstracto

Los TDA son definidos por el programador.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Tipo de Dato Abstracto

Tipos de datos primitivos

La gran mayorıa de los tipos de datos primitivos (int, float, double,etc.) estan definidos en los registros de las actuales arquitecturasde procesador.

Tipo de Dato Abstracto

Los TDA son definidos por el programador.TAD = Datos + Operaciones

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Lista

La lista es un TDA, que consta de una secuencia de elementosllamados nodo.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Lista

La lista es un TDA, que consta de una secuencia de elementosllamados nodo.

Nodo

Datos (Informacion)

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Lista

La lista es un TDA, que consta de una secuencia de elementosllamados nodo.

Nodo

Datos (Informacion)

Enlace o apuntador (Apunta al siguiente nodo)

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Lista

La lista es un TDA, que consta de una secuencia de elementosllamados nodo.

Nodo

Datos (Informacion)

Enlace o apuntador (Apunta al siguiente nodo)

Datos Enlace Teléfono Enlace

Nodo

Nombre

Ejemplo

Sexo

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Nodos enlazados

Los nodos forman una secuencia desde el primer elemento al ultimoelemento. El primer nodo se enlaza al segundo, este se enlaza al tercero,y ası sucesivamente hasta llegar al ultimo nodo, que debe serrepresentado de forma diferente para especificar que este nodo no seenlaza a ningun otro.

Primer nodo Ultimo nodo

Datos Datos nullDatos

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Nodo

public class Nodo {

int id;

Nodo siguiente;

Nodo()

{

id = 0;

siguiente = null;

}

Nodo(int id)

{

this.id = id;

siguiente = null;

}

}

public static void main(String args[])

{

Nodo cero = new Nodo ();

Nodo uno = new Nodo (1);

Nodo dos = new Nodo (2);

Nodo tres = new Nodo (3);

//enlazamiento

cero.siguiente = uno;

uno.siguiente = dos;

dos.siguiente = tres;

//recorrido de la lista

Nodo aux = cero;

while(aux != null)

{

System.out.println("dato: "+aux.id);

aux = aux.siguiente;

}

}

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Operaciones sobre listas

Crear una lista vacıa.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Operaciones sobre listas

Crear una lista vacıa.

Insertar nodo.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Operaciones sobre listas

Crear una lista vacıa.

Insertar nodo.

Eliminar nodo.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Operaciones sobre listas

Crear una lista vacıa.

Insertar nodo.

Eliminar nodo.

Buscar nodo.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Operaciones sobre listas

Crear una lista vacıa.

Insertar nodo.

Eliminar nodo.

Buscar nodo.

Imprimir lista.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Una lista consiste de un conjunto de nodos enlazados.

Operaciones sobre listas

Crear una lista vacıa.

Insertar nodo.

Eliminar nodo.

Buscar nodo.

Imprimir lista.

Eliminar lista.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Clasificacion de las listas

Lista simplemente enlazada.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Clasificacion de las listas

Lista simplemente enlazada.

Lista doblemente enlazada.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Clasificacion de las listas

Lista simplemente enlazada.

Lista doblemente enlazada.

Lista circular simplemente enlazada.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Clasificacion de las listas

Lista simplemente enlazada.

Lista doblemente enlazada.

Lista circular simplemente enlazada.

Lista circular doblemente enlazada.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Clasificacion de las listas

Lista simplemente enlazada.

Lista doblemente enlazada.

Lista circular simplemente enlazada.

Lista circular doblemente enlazada.

Lista FIFO (cola) - First-In-First-Out.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista

Clasificacion de las listas

Lista simplemente enlazada.

Lista doblemente enlazada.

Lista circular simplemente enlazada.

Lista circular doblemente enlazada.

Lista FIFO (cola) - First-In-First-Out.

Lista LIFO (pila) - Last-In-First-Out.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista simplemente enlazada

Fin de listaInicio lista

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista doblemente enlazada

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista circular simplemente enlazada

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Lista circular doblemente enlazada

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Cola

Una cola es un tipo de lista FIFO (el primero en entrar es elprimero en salir), tal como la fila de un banco.Operaciones sobre el tipo cola:

Insertar - por la parte final de la cola.

Remover - por la parte inicial de la cola.

Es vacia - pregunta para saber si la cola es vacia.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Inicio cola removerFin de cola insertar

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Pila

Una pila es un tipo de lista LIFO (el ultimo en entrar es el primeroen salir), tal como una pila de planos.Operaciones sobre el tipo pila:

Meter (push) - inserta por el tope.

Sacar (pop) - sacar por el tope.

Es vacia - pregunta para saber si la pila es vacia.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

tope 2

4

1

3

6

Meter Sacar

Fondo

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Aplicaciones de colas y pilas

Las pilas y colas son dos casos particulares de lista.

Ambas son empleadas en problemas bien definidos.

Aplicaciones:

Compiladores.

Administracion de memoria, procesos de S.O.

Comunicacion de redes.

etc.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

Ejemplo

Dada una lista que representa un texto (caracteres consecutivos),cifrar a dicha lista para que no sea legible.Solucion emplear al cifrario de Cesar:

Desplazamiento del alfabeto

Si se tiene una A, esta puede ser desplazada n veces. Si n = 3,entonces a la letra A, le corresponde la letra D.

Pedro Chavez Lugo Estructuras de Datos

OutlineIntroduccion

ColaPila

Aplicaciones de colas y pilasEjemplo

A B C X Y Z

n = 3

AD E F B C

Pedro Chavez Lugo Estructuras de Datos