1 / 21

Estructuras de datos y algoritmos

Estructuras de datos y algoritmos. Oscar Bedoya. oscarbed@eisc.univalle.edu.co http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. Pila Definición. Una pila es una secuencia de elementos de un tipo base, el último elemento se le llama tope.

willis
Download Presentation

Estructuras de datos y algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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=<elem0, elem1, . . . , elemn-1> л ( i, 0 <= i < n, elemi  Tipo) л elemn-1 = tope

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

  5. Pila Tope de la pila dato siguiente 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 dato Siguiente(NULL)

  6. Pila dato siguiente Tope de la pila 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 dato Siguiente(NULL)

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

  8. Pila • 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 • Pila (Constructor) Al crear una pila, se crea el nodo cabecera. El nodo cabecera tiene como dato null y como siguiente null.

  10. Pila • 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

  11. Pila • 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

  12. Pila • Pop • Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

  13. Pila • Imprimir datos

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

  15. Pila class Nodo{ Object dato; Nodo siguiente; Nodo(Object o) { dato=o; siguiente=null; } Nodo(Object o, Nodo n) { dato=o; siguiente=n; } } } } 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

  16. Pila 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); } … }

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

  18. Pila 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; } } • 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

  19. Pila 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; } } • 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

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

  21. Pila 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; } } } • Imprimir datos

More Related