listas pilas colas_carlos_rosario10-1337

21
Listas Pilas Colas Carlos Rosario 10-1337 structura de Datos

Upload: cjrosario2

Post on 18-Jun-2015

624 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Listas pilas colas_carlos_rosario10-1337

Listas

Pilas

Colas

Carlos Rosario 10-1337

Estructura de Datos

Page 2: Listas pilas colas_carlos_rosario10-1337

Las listas son una estructura de datos organizada de forma secuencial, homogénea y dinámica. Refiriéndonos a que pueden crecer o decrecer en tiempo de ejecución según nuestras necesidades.

Tipos de listas: Densa: la propia estructura determina cual es el

siguiente elemento de la lista. Ejemplo: arrays.

Enlazadas: la posición del siguiente elemento de la estructura la determina el elemento actual.

Listas

Page 3: Listas pilas colas_carlos_rosario10-1337

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 prioridad" los elementos que puede contener.

En una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es null. Por ello los elementos son registros que contienen el dato a almacenar y un enlace al siguiente elemento. Los elementos de una lista, suelen recibir también el nombre de nodos de la lista.

Page 4: Listas pilas colas_carlos_rosario10-1337

Los operadores básicos de una lista enlazada son:

Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta inserción al principio o final de la lista o bien en orden.

Eliminar: elimina un nodo de la lista, puede ser según la posición o por el dato.

Buscar: busca un elemento en la lista.

Localizar: obtiene la posición del nodo en la lista.

Vaciar: borra todos los elementos de la lista

Page 5: Listas pilas colas_carlos_rosario10-1337

Tiene que declararse el tamaño de la lista. Exige sobrevaloración. Consume mucho espacio.

Complejidad computacional de las operaciones: Buscar el enésimo, tiempo constante Visualizar y Buscar, tiempo lineal. Insertar y Eliminar son costosas.

Insertar o eliminar un elemento exige, en promedio, desplazar la mitad de los valores, O(n).

La construcción de una lista o la eliminación de todos sus elementos podría exigir un tiempo cuadrático.

Lista a base de vectores

Page 6: Listas pilas colas_carlos_rosario10-1337

Cada nodo apunta al siguiente; el ultimo no apunta a nada.

La lista es un puntero al primer nodo (y al ultimo). Complejidad computacional de las operaciones:

Visualizar y Buscar, tiempo lineal. Buscar el enésimo, tiempo lineal. Eliminar realiza un cambio de apuntadores y una orden nuevo,

O(1). Usa Buscar anterior cuyo tiempo de ejecución es lineal.

Insertar tras una posición P requiere una llamada a new y dos maniobras con apuntadores, O(1). Buscar la posición P podría llevar tiempo lineal.

Un nodo cabecera facilita la inserción y la eliminación al comienzo de la lista.

listas a base de apuntadores

Page 7: Listas pilas colas_carlos_rosario10-1337

Cada nodo apunta al siguiente y al anterior. Duplica el uso de la memoria necesaria para los

punteros. Duplica el coste de manejo de punteros al

insertar y eliminar. La eliminación se simplifica.

No es necesario buscar el elemento anterior.

listas doblemente enlazadas

Page 8: Listas pilas colas_carlos_rosario10-1337
Page 9: Listas pilas colas_carlos_rosario10-1337

Lista de numero de turnos. Lista de artículos de un almacen. Lista de personas.

Ejemplos de modelados en

listas

Page 10: Listas pilas colas_carlos_rosario10-1337

Tipo: Unidimensional {inv:N pertenece Z+(numeros enteros positivos}

Operaciones: Crear_vectorint>vector Asignar_valoresvectorxint>vector Ordenar_vectorvectorxint>vector Determ_centrovectorxint>int

Tad lista

Page 11: Listas pilas colas_carlos_rosario10-1337

Una pila, es una estructura de datos en la que el último elemento en entrar es el primero en salir, opr lo que también se denominan estructuras LIFO(Last In, First Out).

Pilas

Page 12: Listas pilas colas_carlos_rosario10-1337

Acceso limitado al ultimo elemento insertado. Operaciones básicas: apilar, desapilar y cima.

Push: insertar la data en el tope de la pila. Pop: remueve la data del tope de la pila. Desapilar o cima en una pila vacía es un error en el TDA pila. Quedarse sin espacio al apilar es un error de implementación.

Cada operación deberá tardar una cantidad constante de tiempo en ejecutarse. Con independencia del numero de elementos apiladas.

Page 13: Listas pilas colas_carlos_rosario10-1337

Organizador de paquetes. Pila de cajas de artículos. Maletero.

Ejemplos modelados en

pila

Page 14: Listas pilas colas_carlos_rosario10-1337

Invariante:n<>0 Operaciones:crearPila()

Devuelve valor del tipo pila preparado para ser usado y que contiene un valor de pila vacía.Esta operación es la misma que la de las listas generales.

Precondiciones:N=0 Poscondiciones:pilacread

TAD PILAS

Page 15: Listas pilas colas_carlos_rosario10-1337

Una cola es una secuencia de elementos de un cierto tipo, dispuesto en una dimension(tipo lineal de datos)

Nuevos elementos se anaden al final de la cola.

Esta estructura de datos se puede definir como una lista enlazada con acceso FIFO a la que sólo se tiene acceso al final de la lista para meter elementos y al principio de esta para sacarlos.

Cola

Page 16: Listas pilas colas_carlos_rosario10-1337
Page 17: Listas pilas colas_carlos_rosario10-1337

insertar, quitarPrimero y primero. Cada rutina debería ejecutarse en

tiempo constante.

Operaciones básicas

Page 18: Listas pilas colas_carlos_rosario10-1337

En una cola de prioridad los elementos están ordenados dependiendo de su prioridad, de tal forma que este disponible (para las operaciones Frente y Extraer) el elemento de máxima prioridad.

En caso de igualdad se sigue la regla FIFO, de dos elementos con igual prioridad sale primero el que primero entro.

Esto se puede conseguir bien insertando ordenadamente y extrayendo el primer elemento.

Cola prioridades

Page 19: Listas pilas colas_carlos_rosario10-1337

Tipo: Unidimensional

Invariante: {Inv: N pertenece Z+}

Operaciones: Cola_Crear x int > vector Cola_Insertar vector x int x int > vector Cola_Extraer vector x int > vector Cola_Hayelementos vector > boolean Cola_Eliminar vector x int > vector Cola_llena vector x int > vector Cola_Vaciar vector x int > vector

TAD cola

Page 20: Listas pilas colas_carlos_rosario10-1337

Cola en impresora. Filas para auto servi.

Ejemplosmodelados con

colas

Page 21: Listas pilas colas_carlos_rosario10-1337