Sunteți pe pagina 1din 4

Interface List del api java. Clase Stack. Ejemplos resueltos.

aprenderaprogramar.com, 2006-2029


Seccin: Cursos
Categora: Lenguaje de programacin Java nivel avanzado I

Fecha revisin: 2029

Resumen: Entrega n20 curso Lenguaje de programacin Java Nivel Avanzado I.






Autor: Manuel Sierra
APRENDERAPROGRAMAR.COM
LA ESTRUCTURA DE DATOS
PILA EN JAVA. CLASE STACK
DEL API JAVA. EJEMPLO Y
EJERCICIOS RESUELTOS.
(CU00920C)
Interface List del api java. Clase Stack. Ejemplos resueltos.
aprenderaprogramar.com, 2006-2029
CLASE STACK
A continuacin vamos a explicar la clase Stack de Java, que implementa la interface List. Stack se
traduce por pila y para recordar su signifcado podemos pensar en una pila de libros. Tambin
veremos las caractersticas ms importantes de esta nueva implementacin y haremos un ejemplo a
modo de ejercicio.


STACK
La clase Stack es una clase de las llamadas de tipo LIFO (Last In - First Out, o ltimo en entrar - primero
en salir). Esta clase hereda de la clase que ya hemos estudiado anteriormente en el curso Vector y con 5
operaciones permite tratar un vector a modo de pila o stack.
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) y search (que busca un determinado elemento dentro de la pila y devuelve su posicin dentro de
ella).
Esta clase es muy sencilla y al crear un objeto de tipo Stack con el constructor bsico evidentemente no
contendr ningn elemento.
Un conjunto mucho ms completo y consistente para operaciones de stack LIFO son proporcionados en
la interface Deque y sus implementaciones, pero nosotros de momento vamos a limitarnos al estudio
de la clase Stack.

EJEMPLO USO CLASE STACK
Realizaremos un ejemplo a modo de uso de pila. Uno de los casos ms usados en informtica de una
pila es cuando queremos verificar si una determinada sentencia o instruccin est equilibrada en
cuanto a nmero de parntesis, corchetes o llaves de apertura y cierre. Cuando se escribe cdigo de
programacin si no existe equilibrio entre signos de apertura (por ejemplo un parntesis de apertura) y
cierre (por ejemplo un parntesis de cierre) ni siquiera debera procesarse la sentencia ya que no
estara formalmente bien construida. De esto se encargan los analizadores lxicos de los compiladores.
As que vamos a utilizar esta vez tan solo una clase Programa con el mtodo main, donde vamos a ir
analizando una sentencia para verificar si es equilibrada o no en smbolos de parntesis, recorriendo
todos sus caracteres desde el inicio hasta el final.
Iremos construyendo nuestra pila apilando un smbolo (cada vez que detectemos un smbolo de
apertura o desapilando de ella cuando detectemos un smbolo de cierre. Tendremos que ir analizando
Interface List del api java. Clase Stack. Ejemplos resueltos.
aprenderaprogramar.com, 2006-2029
todos los caracteres de una expresin y actuar cuando detectemos un parntesis, operando en funcin
de si el parntesis ledo es de abrir (() o cerrar ()). El equilibrio en la escritura vendr determinado al
terminar el anlisis en funcin de si la pila est vaca (hay equilibrio) o contiene algn elemento (no hay
equilibrio).
Ejemplo: analizamos la expresin Hay varios pases (Mxico, Espaa) que comparten el mismo idioma
(espaol o castellano).
El resultado al finalizar el anlisis de la sentencia sera que la pila est vaca, y esto querr decir que
nuestra sentencia es equilibrada en parntesis y por tanto el resultado es correcto.
Si analizramos la expresin Hay varios pases (Mxico, Espaa) que comparten el mismo idioma
(espaol o castellano.
El resultado al finalizar el anlisis ser que la pila contiene un parntesis, lo que quiere decir que la
expresin no es equilibrada y no tiene el mismo nmero de parntesis abiertos que cerrados.
Tendremos que tener en cuenta casos especiales como una expresin cuyo primer elemento sea un
parntesis de cierre. Por ejemplo: Hay varios pases )Mxico, Espaa( la consideraramos una
expresin incorrecta ya que si la pila est vaca el primer elemento siempre tendr que ser un
parntesis de apertura y no uno de cierre. Tendremos en cuenta por tanto que adems de equilibrio
exista correccin en la forma de construccin (que no puedan existir cierres de parntesis que no se
hayan abierto).
Vamos a escribir ahora el siguiente cdigo con el que vamos a trabajar:

/* Ejemplo Interface List, clase Stack aprenderaprogramar.com */
import java.util.Stack;
public class Programa {
public static void main(String arg[]) {
String cadenano ="(Cadena no equilibrada en parntesis(()()()))))";
String cadenasi ="(Cadena equilibrada en parentesis())";
System.out.println("Verificacin equilibrado en parntesis para cadenano:");
System.out.println(verificaParentesis(cadenano));
System.out.println("Verificacin equilibrado en parntesis para cadenasi:");
System.out.println(verificaParentesis(cadenasi));
}

public static boolean verificaParentesis(String cadena) {
Stack<String>pila =new Stack<String>(); int i =0;
while (i<cadena.length()) { // Recorremos la expresin carcter a carcter
if(cadena.charAt(i)=='(') {pila.push("(");}// Si el parntesis es de apertura apilamos siempre
else if (cadena.charAt(i)==')') { // Si el parntesis es de cierre actuamos segn el caso
if (!pila.empty()){pila.pop(); }// Si la pila no est vaca desapilamos
else {pila.push(")"); break; }// La pila no puede empezar con un cierre, apilamos y salimos
}
i++;
}
if(pila.empty()){return true; }else {return false; }
}
}
Interface L
aprender
En este ej
dada una
este mto
cadena de
El diagram

La salida q


CONCLUS
Hemos vis
implemen
pop, peek





Prxima e
Acceso al
http://apre
ist del api java
raprogramar.co
jemplo hem
cadena, est
odo de una p
e ejemplo (ca
ma de clases
que obtendr
SIONES
sto un claro
ntacin es m
k, empty, sea
entrega: CU0
curso comp
enderaprogra
. Clase Stack. E
om, 2006-2029
os creado la
a est equili
pila o stack.
adenano o c
por tanto pa
emos por co
ejemplo del
uy fcil de a
arch).
00921C
pleto en apre
amar.com/ind
Ejemplos resuel
a funcin ver
brada y corr
As el progr
adenasi) par
ara BlueJ es
onsola ser s
l uso de la c
prender con
enderaprogr
ex.php?optio
ltos.
rificaParente
recta en par
rama princip
ra verificar su
muy sencillo
imilar a esta
lase Stack qu
n tan solo los
ramar.com --
n=com_conte
esis que nos
ntesis. Para
al main tan
u equilibrado
o y tiene tan
:
ue aunque m
s 5 mtodos
- >Cursos, o
ent&view=cat
devuelve un
a ello se hace
solo llama a
o y correcci
solo la clase

muy sencilla,
comentados
en la direcci
egory&id=58&
n boolean in
e uso interna
a esta funci
n en parnt
Programa:

es muy til
s anteriorme
in siguiente
&Itemid=180
dicando si
amente en
n con una
esis.
ya que su
ente (push,
e:

S-ar putea să vă placă și