Estructuras de datos y algoritmos

21
Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/ Estructuras/ Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y Estructuras de datos y algoritmos algoritmos

description

Estructuras de datos y algoritmos. Oscar Bedoya. [email protected] 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. - PowerPoint PPT Presentation

Transcript of Estructuras de datos y algoritmos

Page 1: Estructuras de datos y algoritmos

Oscar Bedoya.

[email protected]

http://eisc.univalle.edu.co/~oscarbed/Estructuras/

Edificio 331, 2º piso, E.I.S.C.

Estructuras de datos y Estructuras de datos y algoritmosalgoritmos

Page 2: Estructuras de datos y algoritmos

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.

Page 3: Estructuras de datos y algoritmos

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

Page 4: Estructuras de datos y algoritmos

Pila

Operaciones: Pila (Constructor)PushPopImprimir pilaBuscar elemento en la pilaEs una pila vacía?

Page 5: Estructuras de datos y algoritmos

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

9090

5151 dato

siguiente

dato

Siguiente(NULL)

Tope de la pila

Pila

Page 6: Estructuras de datos y algoritmos

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

2323

9090

5151 dato

siguiente

dato

Siguiente(NULL)

Tope de la pila

Pila

Page 7: Estructuras de datos y algoritmos

Operación: pop

Eliminar un elemento de la pila. El elemento que se elimina es el que esté en el tope.

9090

5151 dato

siguiente

dato

Siguiente(NULL)

Tope de la pila

Pila

Page 8: Estructuras de datos y algoritmos

Pila

•Imprimir pilaRecorre toda la pila, comenzando por el tope, y muestra el elemento de cada nodo

•Buscar elemento en la pila

•Es una pila vacía?

Page 9: Estructuras de datos y algoritmos

•Pila (Constructor)

Al crear una pila, se crea el nodo cabecera.

El nodo cabecera tiene como dato null y como siguiente null.

Pila

Page 10: Estructuras de datos y algoritmos

•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

2233

Pila

Page 11: Estructuras de datos y algoritmos

•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

2233

5511

2233

Pila

Page 12: Estructuras de datos y algoritmos

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

5511

2233

2233

Pila

Page 13: Estructuras de datos y algoritmos

•Imprimir datos

Pila

Page 14: Estructuras de datos y algoritmos

•Está una pila vacía?

Cuando la pila está vacía el campo siguiente de la cabecera es null

Pila

Page 15: Estructuras de datos y algoritmos

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

Page 16: Estructuras de datos y algoritmos

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

Page 17: Estructuras de datos y algoritmos

•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

Page 18: Estructuras de datos y algoritmos

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

Page 19: Estructuras de datos y algoritmos

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

Page 20: Estructuras de datos y algoritmos

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

Page 21: Estructuras de datos y algoritmos

•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