estructura_de_datos_pilas_y_colas_..pdf

28
Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.

Upload: cieloci

Post on 09-Nov-2015

12 views

Category:

Documents


0 download

TRANSCRIPT

  • Ingeniera de Sistemas: Luz Esperanza Espitia

    Tutora de Estructura de datos.

  • Con relacin a la Estructura

    LISTA

    Indicar objetos reales que se puedan

    modelar con dicha estructura.

    Listas de Ordenes de visitas (hospital)

    Lista de aplicaciones

    Lista de pacientes

  • Una lista es una estructura de datos secuencial.

    Una manera de clasificarlas es por la forma de acceder al siguiente elemento:

    - Lista densa: la propia estructura determina cul es el siguiente elemento de la lista. Ejemplo: un array. - Lista enlazada: la posicin del siguiente elemento de la estructura la determina el elemento actual. Es necesario almacenar al menos la posicin de memoria del primer elemento. Adems es dinmica, es decir, su tamao cambia durante la ejecucin del programa.

    Definiciones de la misma

    LISTA

  • Las Listas son secuencias de 0 o ms elementos

    de un tipo de datos almacenado en memoria. Son

    estructuras lineales donde cada elemento de una

    lista excepto el primero tiene un nico predecesor

    y cada elemento de la lista excepto el ultimo tiene

    un sucesor.

    Grficamente:

    Definiciones de la misma

    LISTA

  • TAD que modele las LISTAS.

    Nombre: TAD Lista

    Invariante: n/a

    Operaciones:

    crearLista()

    */ Devuelve un valor del tipo pila preparado para ser usado y

    que contiene un valor de pila vaca. Esta operacin es la

    misma que la de las listas generales.*/

    Precondiciones: N=0

    Pos condiciones: Lista creada

  • insertar(crearLista, x pos)

    */ mediante este mtodo se insertan datos a la Lista ya creada. Inserta elemento x en pos */

    Precondiciones: pos != null

    Pos condiciones: insertarLista completado (dato insertado en Lista)

    FIN():

    */Retorna la posicin del ltimo elemento, en otras palabras el fin de la lista, tambin se puede considerar con el tamao de la lista. S la lista est vaca retorna una posicin invalida que podra ser -1. */

    Precondiciones: n/A

    Pos condiciones: operacin finalizada

    .TAD que modele las LISTAS.

  • Siguiente(pos)

    */con este mtodo se Retorna pos + 1, si pos es igual o mayor a FIN(), retorna FIN(). */

    Precondiciones: pos != 0

    Pos condiciones: retorna pos

    anterior(pos)

    */con este mtodo se Retorna pos 1. */ Precondiciones: pos != 0

    Pos condiciones: retorna pos

    limpiar(pos)

    */Limpia la lista y Finaliza FIN()*/

    Precondiciones: nn+1, pos = 0 Pos condiciones: Lista vacia

    .TAD que modele las LISTAS.

  • Relacionar el concepto de

    VENTANA con el de Lista.

    Una ventana es un rea visual, normalmente

    de forma rectangular, que contiene algn tipo de interfaz de usuario, mostrando la salida y permitiendo la entrada de datos para uno de varios procesos que se ejecutan simultneamente.

    Y un Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior.

  • Relacionar el concepto de

    VENTANA con el de Lista.

    El principal beneficio de las listas

    enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco.

    La relacin es que con ambos trminos nos referimos a manipulacin de datos sin importar el orden de los mismos, solo el acceso y su modificacin.

  • Describir las implementaciones de

    Listas:

    Para representar en lenguaje C esta estructura de datos se utilizarn punteros, un tipo de datos que suministra el lenguaje. Se representar una lista vaca con la constante NULL. Se puede definir la lista enlazada de la siguiente manera: struct lista

    {

    int clave;

    struct lista *sig;

    };

  • Describir las implementaciones

    de Listas: e1.- Vectores

    Utilizando una estructura de datos esttica arreglo para representar e implementar el TDA LISTAS. Asumamos que los ELEMENTOS que contiene la LISTA son representados por el tipo ENTERO. La cantidad de ELEMENTOS que puede contener la LISTA tiene un mximo de n ELEMENTOS. Por lo que la representacin formal de este tipo se define de la siguiente manera: Tipo LISTA= arreglo [1..n] de ENTEROS; VarL : LISTA;

  • Implementacin Procedimiento: Operaciones bsicas

    LISTA_VACA (Var L :LISTA) var i : ENTERO;

    principio

    Para i := 1 hasta n hacer L[ i ]:= 0;

    fin;

    Funcin ES_VACA(L :LISTA) : LGICO principio

    Si L[ 1 ] = 0 entonces ES_VACA := Verdad

    Sino ES_VACA := Falso;

    Fin;

    Describir las implementaciones

    de Listas:

  • Procedimiento Insertar (Var L :LISTA, p: POSICIN, e : ENTERO) var i : ENTERO;

    principio

    Si L [p] 0 entonces mientras (i

  • e2.- Listas doblemente enlazadas

    Una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior.

    El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

    Describir las implementaciones

    de Listas:

  • Son listas que tienen un enlace con el elemento siguiente y con el anterior. Una ventaja que tienen es que pueden recorrerse en ambos sentidos, ya sea para efectuar una operacin con cada elemento o para insertar/actualizar y borrar. La otra ventaja es que las bsquedas son algo ms rpidas puesto que no hace falta hacer referencia al elemento anterior. Su inconveniente es que ocupan ms memoria por nodo que una lista simple.

    Describir las implementaciones

    de Listas:

  • Mecanismos para implementar las

    listas.

    En el lenguaje C se utiliza los llamados

    punteros para representar esta estructura de datos.

    En java se encuentra un paquete completo en java.util de donde se pueden utilizar las listas, como un tipo abstracto de datos, este tipo de estructura de datos tambin se utiliza a partir y/o como una interfaz.

  • Con relacin a la Estructura

    PILA:

  • Indicar objetos reales que se puedan

    modelar con dicha estructura.

    Memoria de una pc

    Caja de objetos

    Definiciones de Pila. Una pila es un caso especial de lista en la cual

    todas las inserciones y supresiones tienen lugar en un extremo determinado llamado tope.

  • Definiciones de Pila.

    A las pilas se les llama tambin listas LIFO (last-in

    first-out) o listas primero en entrar, primero en salir. En el TDA Pila no se definen operaciones de posicionamiento en la pila. Esto es debido a

    que todas las operaciones de acceso se realizan

    en la misma posicin, el tope de la pila.

  • TAD que modele las PILAS.

    Nombre: TAD Pila

    Invariante: n0

    Operaciones:

    crearPila() */ Devuelve un valor del tipo pila preparado para

    ser usado y que contiene un valor de pila vaca. Esta operacin es la misma que la de las listas generales.*/

    Precondiciones: N=0

    Pos condiciones: pila creada

  • insertarPila(crearPila) */ mediante este mtodo se insertan datos a la

    pila ya creada. Con las pilas se usa el mtodo push para insertar*/

    Precondiciones: pila null

    Pos condiciones: insertarPila completado (datos insertados en pila)

    borrarPila() */con este mtodo se elmina cierta pila de datos

    */

    Precondiciones: pila null

    Pos condiciones: pila eliminada

  • Con relacin a la Estructura

    COLA:

  • Varias definiciones Cola.

    Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento en entrar ser tambin el primero en salir.

    Una cola es tambin una estructura de datos lineal en donde las eliminaciones se realizan por uno de sus extremos que normalmente se llama frente, y las inserciones se realizan por el otro extremo que normalmente se llama final. A estas estructuras se les llama FIFO (First In First Out).

  • TAD que modele las COLAS.

    Nombre: TAD COLA

    Invariante: n/a

    Operaciones:

    crearCola() */ Devuelve un valor del tipo cola preparado

    para ser usado y que contiene un valor de pila vaca. Esta operacin es la misma que la de las listas generales.*/

    Precondiciones: N=0

    Pos condiciones: cola vacia creada

  • insertarCola(crearCola) */ mediante este mtodo se insertan datos a

    la cola ya creada. */

    Precondiciones: cola null

    Pos condiciones: datos insertados en cola, cola insertada.

    borrarCola() */con este mtodo se elimina cierta cola de

    datos */

    Precondiciones: cola != 0

    Pos condiciones: cola eliminada

  • Particularidades de un TAD COLA

    con prioridades.

    Se introduce una forma de simular genericidad en

    los TADs de Modula-2 mediante el uso del TAD ITEM.

    En una cola de prioridad los elementos estn ordenados dependiendo de su prioridad, de manera que est disponible (para las operaciones Frente y Extraer) el elemento de mxima prioridad. En caso de igualdad se sigue la regla FIFO, de dos elementos con igual prioridad sale primero el que primero entr. Esto se puede conseguir bien insertando ordenadamente y extrayendo el primer elemento, bien Dpto.

  • Implementaciones de COLAS con

    vectores circulares

    public class Cola { private static int max = 100;

    private Object elementos[];

    private int frente, post;

    } // fin clase Cola

  • Gracias por su

    Atencin!!