listas, pilas y colas

20
TADs Lista, Pilas y Colas. Eliezer Beriguete Alcantara 12-0708 Estructura de Datos Prof. Rina Familia

Upload: elbery

Post on 11-Jul-2015

548 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Listas, pilas y colas

TADs Lista, Pilas y Colas.

Eliezer Beriguete Alcantara 12-0708

Estructura de Datos Prof. Rina Familia

Page 2: Listas, pilas y colas

La lista enlazada es un TDA que nos permite almacenar datos de una

forma organizada, al igual que los vectores pero, a diferencia de estos,

esta estructura es dinámica, por lo que no tenemos que saber "a priori"

los elementos que puede contener.

TAD Lista

Page 3: Listas, pilas y colas

Una lista consiste en una cantidad arbitraria de

elementos ordenados.

Una Lista es, a la vez, un TD (tipo de datos), un TAD (tipo

abstracto de datos) o una ED (estructura De datos).

Page 4: Listas, pilas y colas

TAD para modelar Listas

void imprimirLista( Lista lista ) { /*Imprime los elementos de la lista post: se imprimen todos los elementos de la lista l } Lista copiarLista( Lista lst ) { /*copia la lista {pre: lst es una lista} {post: copia la lista lst y crea otra igual} }

Page 5: Listas, pilas y colas

Lista ordenadaLista( Lista lst ) { /*ordena los datos de la lista

pre: lst = < x1,…, xn > post: ordenadaLista = ( xi, xi+1)

} Lista insertarDato (int dato ) { /*inserta un dato en la lista

Pre: dato es un entero post: insertarDato es una lista de enteros

}

Page 6: Listas, pilas y colas

Lista eliminarDato (int dato, Lista lista ) { /*Elimina un dato de la lista

Pre: dato es un entero post: eliminarDato es una lista de enteros

} int buscarDato (int dato, Lista lista ) { /*busca un dato en la lista

Pre: dato es un entero post: buscarDato es un entero igual a dato si existe en la lista, si no existe en nulo

}

Page 7: Listas, pilas y colas

Int localizarDato (int dato, Lista lista ) { /*busca la posicion del dato en la lista

Pre: dato es un entero post: localizarDato es la posicion del dato buscado en la lista

}

Page 8: Listas, pilas y colas

TAD Cola: conceptos y especificaciones

Secuencia de elementos de un cierto tipo, dispuestos en una dimensión (tipo lineal de datos)

– Nuevos elementos se añaden al final de la cola (añadir

encolar)

– Los elementos salen o se eliminan, de la cabeza de la cola (eliminar – desencolar)

– Operación de interés: observar el primero de los elementos de la cola (primero)

– Valor especial: cola vacía

– Estructura FIFO (First In, First Out): el orden de salida

debe corresponderse con el orden de llegada

Page 9: Listas, pilas y colas

Caracteristicas Los elementos se añaden por el extremo final, y se eliminan por el extremo opuesto: frente

El único elemento observable en todo momento es el primero que fue insertado

Se le suele denominar estructura FIFO (First Input First Output).

Page 10: Listas, pilas y colas

colaVacía: -----> cola

encolar: cola elemento -----> cola

parcial desencolar: cola -----> cola

parcial primero: cola -----> elem

esvacía: cola -----> bool

Operaciones

Funciones

Page 11: Listas, pilas y colas

creaVacía( sal c:cola) {Post: c=colaVacía} añadir(e/s c:cola; ent e:elemento) {Pre: c=c0} {Post: c=encolar(c0,e)} eliminar( e/s c:cola) {Pre: (c=c0)∧(c0≠colaVacía)} {Post: c=desencolar(c0)} primero(c:cola) devuelve elemento {Pre: (c=c0) ∧(c0≠colaVacía)} {Post: primero(c0)=primero(c0)} esVacía(c:cola) devuelve booleano {Post: esVacía(c)=vacía?(c)}

Page 12: Listas, pilas y colas

TAD pila: conceptos y especificaciones

Una pila (stack) es un conjunto de elementos del mismo tipo que solamente puede crecer o decrecer por uno de sus extremos.

– Valor especial: pila vacía

– Operaciones: apilar (añadir elemento), desapilar

(quitar elemento), cima (observar último elemento)

– Comportamiento:

• Cima de pila no vacía es el último elemento apilado

• Apilar añade un elemento “encima” del que estaba en la cima

• Desapilar de pila no vacía elimina el último elemento apilado

• Denominadas también estructuras LIFO (Last In, First Out)

Page 13: Listas, pilas y colas

El último elemento agregado se denomina tope (top) y el primero fondo (back).

Page 14: Listas, pilas y colas
Page 15: Listas, pilas y colas

Operaciones

InicializarPila

Apilar

Desapilar

pilaVacia

Cima

Decapitar

leerPila

imprimirPila

Eliminar

enumElemPila

Page 16: Listas, pilas y colas

crearPila: - →→→ Pila

apilar : Pila X Elemento →→→ Pila

desapilar : Pila →→→ Pila

recuperarTope: Pila →→→ Elemento

esVacia: Pila →→→ booleano

destruirPila : Pila →→→ -

Pila crearPila();

void apilar(Pila p, Elemento e);

void desapilar(Pila p);

Elemento recuperarTope(Pila p);

int esVacia(Pila p);

void destruirPila(Pila p);

Page 17: Listas, pilas y colas
Page 18: Listas, pilas y colas
Page 19: Listas, pilas y colas

Aplicaciones

Las pilas tienen muchas aplicaciones en informática. Por ejemplo se usan para: • evaluar expresiones aritméticas • analizar sintaxis • simular procesos recursivos

Page 20: Listas, pilas y colas

Referencias

http://www.buenastareas.com/ensayos/Tad-Lista/1996890.html http://webdiis.unizar.es/asignaturas/EDA-Tardes/leccion_10.pdf http://ocw.upm.es/lenguajes-y-sistemas-informaticos/estructuras-de-datos/contenidos/tema2/temaII2_presentacion.pdf http://cupi2.uniandes.edu.co/libros/estructuras_de_datos/index.php?option=com_content&view=article&id=88:23-ejemplos-de-utilizacion-del-tad&catid=59&Itemid=71 http://informatica.utem.cl/~mcast/ESDATOS/TADS/Ttema2.pdf http://www.calcifer.org/documentos/librognome/glib-lists-queues.html