pilas

20
PILASS dulce viridiana mora hernandez jose eduardo barron bravo roberto carlos rodriguez tamayo olga judith quiroz ramirez somos de la clase del martes de 8:45 a 10:30

Upload: edna-rosario-puente-martinez

Post on 14-Nov-2015

4 views

Category:

Documents


0 download

DESCRIPTION

Pilas en estructura de datos

TRANSCRIPT

  • PILASS dulce viridiana mora hernandez jose eduardo barron bravo roberto carlos rodriguez tamayo olga judith quiroz ramirez somos de la clase del martes de 8:45 a 10:30

  • Definicin

    Una pila representa una estructura lineal de datos en la que se puede agregar o quitar elementos nicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en orden inverso al que se insertaron; es decir, el ltimo elemento que se mete en la pila es el primero que se saca. Debido a esta caracterstica, se le conoce como estructura LIFO (Last-Input, First-Output: el ultimo en entrar es el primero en salir).

  • Representacin de

    Pilas

  • Las pilas no son estructuras fundamentales de datos; es decir, no estn definidas como tales en los lenguajes de programacin. Para su representacin requieren el uso de otras estructuras de datos, como:

    Arreglos

    Listas

  • Se utilizaran arreglos. En consecuencia, es importante definir el tamao mximo de la pila, as como una variable auxiliar a la que se denomina TOPE. Esta variable se utiliza para indicar el ltimo elemento que se inserto en la pila. En la siguiente figura se presentan dos alternativas de representacin de una pila, utilizando arreglos.

  • Alternativas de representacin de una pila

  • Operaciones

    Con Pilas

  • Para el caso de las pilas, las operaciones bsicas que se pueden llevar a cabo son:

    Insertar un elemento -Push- en la pila (Apilar).

    Eliminar un elemento -Pop- de la pila (Desapilar).

    Y las operaciones auxiliares:

    Pila vaca

    Pila llena

  • Pila vaca (PILA,TOPE,BAND)

    1. Si (TOPE = 0) {Verifica si no hay elementos almacenados en la pila}

    entonces

    Hacer BAND VERDADERO {La pila esta vaca}

    si no

    Hacer BAND FALSO{La pila no esta vaca}

    2. {Fin del condicional del paso 1}

  • Pila llena (PILA,TOPE,MAX,BAND)

    1. Si (TOPE = MAX)

    entonces

    Hacer BAND VERDADERO {La pila est llena}

    si no

    Hacer BAND FALSO {La pila no est llena}

    2. {Fin del condicional del paso 1}

  • Pone (PILA,TOPE,MAX,DATO). 1.Llamar a Pila llena con PILA, TOPE, MAX y BAND 2.SI (BAND = VERDADERO) entonces Escribir Desbordamiento-pila llena si no Hacer TOPE TOPE + 1 y PILA[TOPE] DATO {Actualiza TOPE e inserta el nuevo elemento en el TOPE

    de PILA} 3.{Fin de la condicin del paso 2}

  • Quita (PILA,TOPE,DATO)

    1.Llamar a Pila vacia con PILA, TOPE y BAND

    2.SI (BAND = VERDADERO)

    entonces

    Escribir Subdesbordamiento-pila vaca

    si no

    Hacer DATO PILA [TOPE] y TOPE TOPE - 1 {Actualiza TOPE}

    3.{Fin de la condicin del paso 2}

  • Aplicaciones de las

    Pilas

    Llamadas a subprogramas

    Recursividad

    Tratamiento de expresiones aritmticas

    Ordenacin

  • Llamadas a Subprogramas:

    Permite guardar la direccin del programa, o subprograma, desde donde se hizo la llamada a otros subprogramas, para regresar posteriormente y seguir ejecutndolo a partir de instrucciones inmediatas a la llamada.

    Permite guardar el estado de las variables en el momento en que se hace la llamada, para seguir ocupndolas al regresar del subprograma.

  • Recursividad

    Podemos definir la recursividad como un proceso que se define en trminos de s mismo.

    Un ejemplo de esto es cuando se toma una fotografa de una fotografa, o cuando en un programa de televisin un periodista transfiere el control a otro periodista que se encuentra en otra ciudad, y este a su vez le transfiere el control a otro.

  • Casos tpicos de estructuras de datos definidas de manera recursiva son los rboles binarios y las listas enlazadas.

    La recursin se puede dar de dos formas:

    DIRECTA. Este tipo de recursin se da cuando un subprograma se llama directamente a s mismo.

    INDIRECTA. Sucede cuando un subprograma llama a un segundo subprograma, y este a su vez llama al primero, es decir el subproceso A llama al B, y el B invoca al subproceso A.

  • Tratamiento de expresiones aritmticas:

    Convertir expresiones en notacin infija a su equivlete en notacin prefija o posfija.

    Infija (A + B)

    Posfija AB+

    Prefija +AB

    Ejemplo:

    Expresin infija: (X+Z)*W/T^Y-V

    Expresin posfija: XZ+W*TY^/V-

  • PASO EXPRESION

    0 (X+Z)*W/T^Y-V

    1 XZ+*W/T^Y-V

    2 XZ+*W/TY^-V

    3 XZ+W*/TY^-V

    4 XZ+W*TY^/-V

    5 XZ+W*TY^/V-