You are on page 1of 10

PILAS Una Pila es una estructura formada por una secuencia de 0 a N elementos, en la que las operaciones sobre sus

elementos se realizan por un solo extremo llamado Cima de la pila. El hecho de que las operaciones se realicen solo por un extremo, implica que el nico elemento accesible de la pila es el que se encuentra en la Cima. Esto exigir que el proceso sobre un elemento de la pila necesite que este ocupe la posicin de la Cima. A esta estructura se la denomina comnmente como estructura LIFO (Last Input First Output), esto es debido a que, como hemos visto anteriormente el ltimo elemento que se haya almacenado en la estructura es el primero que puede salir de la misma.

Ejemplos de Pilas en la vida real: Pila de libros Pila de platos Pila de bandejas Pila de cartas ...

Operaciones para la manipulacin de la estructura Pila Sobre una estructura tipo Pila, adems de surgir de forma natural las operaciones que permiten aadir y quitar elementos de la pila necesitaremos otras operaciones para la manipulacin dicha estructura como son: Crear una Pila Vaciar la Pila Comprobar si la pila Esta Vacia Obtener una copia del elemento que esta en la Cima Insertar un elemento que sea el primero de la Pila Borrar el elemento que esta como primero de la Pila

A la operacin Insertar se la conoce tambien como Apilar u operacin Push. A la unin de las operaciones Cima + Borrar se la conoce tambien como Desapilar u operacin Pop.

CLASE PILA
La Pila es una estructura lineal de tipo LIFO ( Last Input First Output), en la que los elementos se insertan por un extremo de la estructura y se obtienen por el mismo extremo (pe. Pila de libros, pila de platos). Se va ha implementar la clase Pila segn la siguiente definicin:
/*Clase Nodo. Cada elemento de la pila es un nodo que contiene informacin de tipo Object y una referencia al siguiente nodo de la pila */ public class Nodo { //Informacin, de tipo Object, almacenada en cada nodo private Object elemento; //Referencia al siguiente nodo private Nodo siguiente; } public class Pila { //Pila que almacena objetos de tipo Object Pila Dinmica

// primero hace referencia al primer nodo de la pila private Nodo primero; // tam indica el nmero de elementos de la pila en cada momento private int tam; //Constructor sin argumentos public Pila() /* Elimina todos los elementos de la pila y la deja vaca */ public void vaciar() /* Devuelve si la pila est vaca o no */ public boolean esVacia() /* Devuelve el nmero de elementos que contiene la pila*/ public int tamanyo() /*Inserta el objeto x que le llega como parmetro en la pila. Muestra un mensaje de error si la pila est llena */ public void push(Object x) /*Devuelve, sin eliminar, el elemento situado en la cima de la pila. Devuelve null si la pila est vaca */ public Object cima() /*Elimina, sin devolverlo, el elemento situado en la cima de la pila */ public void borrar() /*Devuelve y elimina el elemento situado en la cima de la pila. Devuelve null si la pila est vaca */ public Object pop()

La declaracion completa de la clase Nodo usada en la pila es la siguiente:


Nodo.java public class Nodo private Object elemento; private Nodo siguiente;

//Informacin, de tipo Object, almacenada en cada nodo //Referencia al siguiente nodo

public Nodo() /* Crea un nuevo objeto nodo */ { elemento = null; siguiente = null; } public Nodo(Object x) /* Crea un nuevo objeto nodo moviendo el elemento X */ { elemento = x; siguiente=null; } public Nodo(Object x, Nodo sig) /* Crea un nuevo objeto nodo moviendo el elemento X sin copiar y poniendo en su atributo Siguiente el valor Sig */ { elemento = x; siguiente = sig; } }

public class Pila { private Nodo primero; //hace referencia al primer nodo de la pila private int tam; //indica el n de elementos de la pila public Pila() /* Crea una nueva pila, vaca */ { primero = null; tam = 0; } public void vaciar() /* Elimina todos los elementos de la pila y la deja vacia */ { primero = null; tam = 0; } public boolean esVacia() /* Devuelve true si la pila esta vacia, false en caso contrario */ { return (primero == null); } public int tamanyo() /* Devuelve el numero de elementos que contiene la pila */ { return tam; } public void push( Object x ); /* Inserta X en la primera posicin de la pila */ { primero = new Nodo( x, primero ); tam ++; }

public Object cima( )


/* Devuelve, sin eliminar, el elemento situado en la cima de la pila. Devuelve null si la pila esta vacia*/

{ if (primero!=null) return primero.elemento; else return null; } public void borrar( )


/* Elimina sin devolverlo, el elemento situado en la cima de la pila*/

{ if (primero != null) { primero = primero.siguiente; tam --; } } public Object pop( )


/* Devuelve y elimina el elemento situado en la cima de la pila. Devuelve null si la pila esta vacia*/

{ if (primero == null) return null; else { Nodo temp = primero; primero = primero.siguiente; tam --; return temp.elemento; } } }

CLASE PILA
La Pila es una estructura lineal de tipo LIFO ( Last Input First Output), en la que los elementos se insertan por un extremo de la estructura y se obtienen por el mismo extremo (pe. Pila de libros, pila de platos). Se va ha implementar la clase Pila segn la siguiente definicin:

public class Pila { //Pila que almacena objetos de tipo Object

Pila Estatica

private Object [] v; /*contador indica el nmero de elementos de la pila en cada momento */ private int contador; //Constructor para crear el array en funcin del tamanyo public Pila(int tamanyo) /* Elimina todos los elementos de la pila y la deja vaca */ public void vaciar() /* Devuelve si la pila est vaca o no */ public boolean esVacia() /* Devuelve el nmero de elementos que contiene la pila*/ public int tamanyo() /*Inserta el objeto x que le llega como parmetro en la pila. Muestra un mensaje de error si la pila est llena */ public void push(Object x) /*Devuelve, sin eliminar, el elemento situado en la cima de la pila. Devuelve null si la pila est vaca */ public Object cima() /*Elimina, sin devolverlo, el elemento situado en la cima de la pila */ public void borrar() /*Devuelve y elimina el elemento situado en la cima de la pila. Devuelve null si la pila est vaca */ public Object pop()

public class Pila { private Object [] v; private int cont; public Pila(int tamanyo){ v = new Object(tamanyo); cont = 0; for (int i=0; i< v.length; i++) v[i] = null; } public void vaciar(){ cont = 0; for (int i=0; i< v.length; i++) v[i] = null; } public boolean esVacia(){ return (cont == 0); } public void push(Object x){ if (cont != v.length){ v[cont] = x; cont = cont + 1; } else System.out.println("Error, la pila esta llena"); } public Object cima(){ if (cont > 0) return v[cont-1]; else return null } public void borrar(){ if (cont != 0){ cont = cont - 1; v[cont] = null; }else System.out.println("Error, la pila esta vacia"); } public Object pop(){ if (cont == 0) return null; else { cont = cont - 1; Object temp = v[cont] ; v[cont] = null; return temp; } } public int tamanyo(){ return cont;

You might also like