La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.

Presentaciones similares


Presentación del tema: "Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos."— Transcripción de la presentación:

1 Oscar Bedoya. oscarbed@eisc.univalle.edu.co http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos

2 Pila Definición Una pila es una secuencia de elementos de un tipo base, el último elemento se le llama tope. En una pila sólo se puede adicionar al tope y solo se puede retirar de él.

3 Pila Definición TDA Pila Descripción: Una pila es una secuencia de elementos de un tipo base, el último elemento se le llama tope. En una pila solo se puede adicionar al tope y solo se puede retirar de él. Invariante: Pila= л (  i, 0 <= i < n, elem i  Tipo) л elem n-1 = tope

4 Pila Operaciones: Pila (Constructor) Push Pop Imprimir pila Buscar elemento en la pila Es una pila vacía?

5 Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza 90 51 dato siguiente dato Siguiente(NULL) Tope de la pila Pila

6 Operación: push Insertar un nuevo nodo a la pila. El elemento que se inserta, pasa a ser el tope de la pila dato siguiente 23 90 51 dato siguiente dato Siguiente(NULL) Tope de la pila Pila

7 Operación: pop Eliminar un elemento de la pila. El elemento que se elimina es el que esté en el tope. 90 51 dato siguiente dato Siguiente(NULL) Tope de la pila Pila

8 Imprimir pila Recorre toda la pila, comenzando por el tope, y muestra el elemento de cada nodo Buscar elemento en la pila Es una pila vacía?

9 Pila (Constructor) Al crear una pila, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null. Pila

10 Push ( La Pila está vacía ) Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado23 Pila

11 Push( La pila no está vacía ) Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando23 51 23 Pila

12 Pop Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo 51 23 23 Pila

13 Imprimir datos Pila

14 Está una pila vacía? Cuando la pila está vacía el campo siguiente de la cabecera es null Pila

15 Cada nodo se representa por medio de dos campos: Campo dato: contiene el valor del nodo Campo siguiente: indica cuál es el nodo con el que se enlaza class Nodo{ Object dato; Nodo siguiente; Nodo(Object o) { dato=o; siguiente=null; } Nodo(Object o, Nodo n) { dato=o; siguiente=n; } Pila

16 Crear Pila Al crear una Pila, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null. class Pila{ Nodo cabecera; Pila() { cabecera=new Nodo(null); } … } Pila

17 Está una pila vacía? Cuando la pila está vacía el campo siguiente de la cabecera es null public boolean estaVacia() { if (cabecera.siguiente==null) { return true; } else { return false; } Pila

18 Push ( La pila está vacía) Se crea un nuevo nodo con el dato que se desee colocar y con siguiente null El campo siguiente del nodo cabecera pasa de ser null a ser el nodo que estamos insertado public void push(Object o) { Nodo nuevo=new Nodo(null); if ( estaVacia() ) { nuevo=new Nodo(o); nuevo.siguiente=null; cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } Pila

19 Push ( La pila no está vacía) Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando public void push(Object o) { Nodo nuevo=new Nodo(null); if ( estaVacia() ) { nuevo=new Nodo(o); nuevo.siguiente=null; cabecera.siguiente=nuevo; } else { nuevo=new Nodo(o); nuevo.siguiente=cabecera.siguiente; cabecera.siguiente=nuevo; } Pila

20 Pop Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo public void pop() { if (cabecera.siguiente==null) System.out.println("LA PILA ESTA VACIA"); else{ Nodo borrar=cabecera.siguiente; cabecera.siguiente=borrar.siguiente; } Pila

21 Imprimir datos public void imprimir() { Nodo actual=new Nodo(null); if (estaVacia()) System.out.println("Vacio"); else { actual=cabecera; System.out.println("\n"); while( actual != null){ System.out.print(" |" + actual.dato + "|->" ); actual=actual.siguiente; } Pila


Descargar ppt "Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos."

Presentaciones similares


Anuncios Google