Está en la página 1de 15

07/02/2013

Introduccin al TDA Pila: Implementacin con arreglos

Curso: Algoritmos y Estructuras de Datos. Docente: Mg. Zoraida Yanet Vidal Melgarejo.
CLASE 06

Listas con restriccin de acceso.


Se estudiarn algunos casos particulares de listas que presentan restricciones en cuanto al acceso a sus elementos, bsicamente los relacionados a la eliminacin y la insercin de los mismos. En todos los casos la representacin de la informacin es similar a la utilizada en el TDA Lista. Colecciones de datos de un mismo tipo, organizados linealmente, donde cada dato posee un ndice o posicin que lo identifica de manera nica en la coleccin.

07/02/2013

TDA Pila.
Son listas en las que la insercin y la eliminacin se realizan por el mismo extremo de la lista (tope o cima de la pila) La insercin recibe el nombre de push y la eliminacin es conocida como pop. Generalmente tambin se aplica una operacin que retorna el elemento que se encuentra en el tope de la pila, dicha operacin recibe el nombre de top. Tambin son conocidas como estructuras de tipo LIFO (Last In First Out ltimo en entrar, primero en salir).

TDA Pila.

07/02/2013

TDA Pila.
Los elementos de la pila sern de tipo Object. La operacin de crear la har el constructor de la clase que implementa TPila.

TDA Pila: Implementacin con arreglos.


Campos a considerar: El arreglo (de Objects) que almacenar los elementos de la lista. Cantidad de elementos que estn en la lista. Mximo ( capacidad) del arreglo.

07/02/2013

TDA Pila: Implementacin con arreglos.


class TPilaA { private OperaLista P; ....... }

La pila (P) sera una lista, que en este caso sera una lista implementada con arreglos.

TDA Pila: Implementacin con arreglos.


// Constructor: public TPilaA() { P = OperaLista(); } // Insertar: push public void push(Object dato) { P.insertar(dato, 0); }

07/02/2013

TDA Pila: Implementacin con arreglos.


// Insertar: push

TDA Pila: Implementacin con arreglos.


// Eliminar (extraer): pop public Object pop() { Object aux = P.obtener(0); P.eliminar(0); return aux; }

10

07/02/2013

TDA Pila: Implementacin con arreglos.


// Eliminar (extraer): pop

11

TDA Pila: Implementacin con arreglos.


// Obtener primer elemento: top public Object top() { Object aux = P.obtener(0); return aux; } // Vacia public boolean vacia() { return P.vacia(); }

12

07/02/2013

TDA Pila: Implementacin con arreglos.


// Cantidad public int cantidad() { return P.cantidad(); } // Obtener public Object obtener(int pos) { return P.obtener(pos); } // Modificar public void modificar(Object dato, int pos) { P.modificar(dato, pos); }
13

TDA Pila: Implementacin con arreglos.


// Buscar public int buscar(Object dato) { return P.buscar(dato); }

14

07/02/2013

TDA Pila: Consideraciones de implementacin.


La implementacin de TPilaA, que utilizar TListaA (listas con arreglos), debe utilizar como extremo de la lista el final, para que la insercin y eliminacin de los elementos se realice al final del arreglo, lo cual no requerir mover los elementos contenidos en el arreglo.

15

TDA Pila: Aplicaciones.


El uso de las pilas es ampliamente extendido en aplicaciones relacionadas con compiladores y sistemas operativos: Algoritmos de anlisis sintctico LR. Cdigo intermedio orientado a pila. Planificacin de procesos. Paso de parmetros a funciones y procedimiento. Evaluacin de expresiones en notacin postfija.

16

07/02/2013

TDA Pila: Ejemplo.


Utilizar una pila para realizar la evaluacin de expresiones en notacin postfija. Notacin Infija: los operadores se escriben entre los operandos. Ejemplo: 5 * (4 + 2) - 7 Notacin Postfija: los operadores se escriben despus de los operandos. Ejemplo: 5 4 2 + * 7 -

17

TDA Pila: Ejemplo.


Para dar solucin al ejercicio se utilizar una pila para guardar los resultados intermedios de las expresiones. Para cada elemento hay que distinguir si es un operando o un operador. Operando: se pone en la pila. Operador: se extraen de la pila (tope y subtope). Se realiza la operacin y se coloca el resultado en la pila.

Al final el resultado de la expresin queda en el tope de la pila.

18

07/02/2013

TDA Pila: Ejemplo.


Ejemplo: Sea la expresin 5 4 2 + * 7 -

[3] [2] [1] [0]

Pila vaca

19

TDA Pila: Ejemplo.


Paso 1: 5 4 2 + * 7 5 es un operando, entonces se coloca en la pila

[3] [2] [1] [0] 5 Tope

Pila

20

10

07/02/2013

TDA Pila: Ejemplo.


Paso 2: 4 2 + * 7 4 es un operando, entonces se coloca en la pila

[3] [2] [1] [0] 5 4 Tope

Pila

21

TDA Pila: Ejemplo.


Paso 3: 2 + * 7 2 es un operando, entonces se coloca en la pila

[3] [2] [1]

5
4 2 Tope

[0]

Pila

22

11

07/02/2013

TDA Pila: Ejemplo.


Paso 4: + * 7 + es un operador, entonces se extrae de la pila sus operandos.

[3] [2] [1] [0] 5

4
2

Subtope Tope

Pila Como son dos operandos, el primer operando es el subtope (4) y el segundo operando es el tope (2).
23

TDA Pila: Ejemplo.


Paso 4: + * 7 Se realiza la operacin (+) y se pone el resultado en la pila (6).

[3] [2] [1] 5 6 Tope

[0]

Pila

24

12

07/02/2013

TDA Pila: Ejemplo.


Paso 5: * 7 * es un operador, entonces se extrae de la pila sus operandos.

[3] [2] [1] [0]

5
6

Subtope Tope

Pila Como son dos operandos, el primer operando es el subtope (5) y el segundo operando es el tope (6).
25

TDA Pila: Ejemplo.


Paso 5: * 7 Se realiza la operacin (*) y se pone el resultado en la pila (30).

[3] [2] [1]

[0]

30

Tope

Pila

26

13

07/02/2013

TDA Pila: Ejemplo.


Paso 6: 7 7 es un operando, entonces se coloca en la pila

[3] [2] [1] [0]

30
7 Tope

Pila

27

TDA Pila: Ejemplo.


Paso 7: - es un operador, entonces se extrae de la pila sus operandos.

[3] [2] [1] 30 7 Subtope Tope

[0]

Pila
Como son dos operandos, el primer operando es el subtope (30) y el segundo operando es el tope (7).
28

14

07/02/2013

TDA Pila: Ejemplo.


Paso 7: Se realiza la operacin (-) y se pone el resultado en la pila (23).

[3] [2] [1] [0] 23 Tope

Pila El resultado final queda en el tope de la pila (23).

29

TDA Pila: Ejemplo.


Desarrolle el programa que permita implementar el ejemplo mostrado.

30

15

También podría gustarte