Вы находитесь на странице: 1из 18

PILAS

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

CONCEPTO DE PILA

Una pila (stack) es una


coleccin ordenada de
elementos a los cuales
slo se puede acceder
por un nico lugar o
extremo de la pila.
Los elementos se aaden
o se quitan (borran) de la
pila slo por su parte
superior (cima).
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Las pilas se conocen tambin como estructuras LIFO


(Last-in, first-out, ltimo en entrar primero en salir).
Las pilas se utilizan en compiladores, sistemas operativos
y programas de aplicaciones.
Una aplicacin interesante es la evaluacin de
expresiones aritmticas

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Las entradas de la pila


deben ser eliminadas
en el orden inverso al
que se situaron en la
misma.

Las operaciones usuales en la pila son Insertar y Quitar.

La operacin Insertar La operacin Quitar


(push) aade un
(pop) elimina o saca un
elemento en la cima elemento de la pila.
de la pila.
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

La pila se puede
implementar de las
siguientes formas

Guardando los elementos en un array, en cuyo caso su


dimensin o longitud es fija.

Otra forma de implementacin consiste en construir una lista


enlazada.
De modo que cada elemento de la pila
forma un nodo de la lista.
La lista crece o decrece segn se aaden o
se extraen, respectivamente, elementos de
la pila; sta es una representacin dinmica,
y no existe limitacin en su tamao excepto
la memoria de la comutadora.
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Una pila puede estar vaca (no tiene elementos) o llena (en la
representacin con un array arreglo, si se ha llegado al ltimo
elemento).
Si un programa intenta sacar un elemento de una pila vaca, se
producir un error, una excepcin, debido a que esa operacin es
imposible;
Por el contrario, si un programa intenta poner un elemento en
una pila llena, se produce un error, una excepcin, de
desbordamiento (overflow).
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Para evitar estas situaciones se disean mtodos que


comprueban si la pila est llena o vaca.

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

PILA IMPLEMENTADA CON ARRAYS

Insertar (push)

Quitar (pop)

Estructura de Datos

1. Verificar si la pila no est llena.


2. Incrementar en 1 el ndice de la pila.
3. Almacenar elemento en la posicin del ndice de la pila.
1. Verificar si la pila no est vaca.
2. Leer el elemento de la posicin del ndice de la pila.
3. Decrementar en 1 el puntero de la pila.

Ciclo II/ 2016

Ing. Yancy de Molina

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

PILA IMPLEMENTADO COMO UN A LISTA


ENLAZADA

Esta realizacin tiene la ventaja de que el tamao se ajusta


exactamente al nmero de elementos de la pila. Sin embargo, para
cada elemento es necesaria ms memoria ya que hay que guardar
el campo de enlace entre nodos consecutivos
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

PILA IMPLEMENT ADO COMO UN A LISTA


ENLAZADA
class NodoPila

class PilaLista
pilaVacia()
push(tipo elemento)
quitar()
cimaPila()
limpiarPila()
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

COLECCIONES
Las clases que forman parte del grupo de clases coleccin son aquellas
que nos sirven para almacenar referencias a objetos, e implementan
estructuras de datos tales como listas, tablas de dispersin, conjuntos,
etctera.

El conjunto de interfaces, clases y algoritmos que nos permiten trabajar


con estructuras de datos se agrupan bajo el Java Collections Framework

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

la clase ArrayList representa


una secuencia indexada de
elementos, cada uno de ellos
ocupa una posicin dentro de la
estructura, y se puede acceder
a un elemento dentro de la
estructura a travs de su ndice.

Stack
La clase Stack es una clase de las llamadas
de tipo LIFO (Last In - First Out, o
ltimo en entrar - primero en salir).
Las operaciones bsicas son :
push (que introduce un elemento en la pila).
pop (que saca un elemento de la pila).
peek (consulta el primer elemento de la cima de la pila).
empty (que comprueba si la pila est vaca)
search (que busca un determinado elemento dentro de la pila y devuelve
su posicin dentro de ella).
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Qu son los tipos de datos genricos?


Las clases pueden trabajar con cualquier tipo de datos, basta con
indicarlo en el momento de instanciar la clase.
El uso de genricos hace posible la deteccin de errores de incompatibilidad de
tipos durante la fase de compilacin haciendo que nuestro cdigo sea ms robusto.
Un tipo de datos genrico es un tipo de datos que no se especifica, nicamente
se indica que se utilizar algn tipo de dato pero no se indica el tipo concreto
hasta que no se utiliza.
Los tipos de datos genricos se pueden utilizar en la definicin de un mtodo, o en
la definicin de una clase.

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Mtodos genricos
Para indicar que un mtodo trabaja con tipos genricos se escribe < T > entre
el modificador de acceso y el tipo de dato de retorno del mtodo.

En la declaracin del mtodo private <T>void muestraNombreClase(T t), la <T>


indica que se va a utilizar un tipo genrico, de modo que la lista de argumentos (T t)
se interpreta como una referencia de tipo genrico T

metodoGenerico.muestraNombreClase(new Float(1));
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Si el mtodo trabaja con un par de tipos genricos que pueden ser


diferentes se indica como private <T, U> void metodo(T t, U u)

Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

CLASES GENERICAS

Sabemos que la clase ArrayList<E> es un contenedor que trabaja con


genricos
Estructura de Datos

Ciclo II/ 2016

Ing. Yancy de Molina

Вам также может понравиться