Programar Pila en Java


Como están bueno en esta parte vamos a ver como crear una pila simple en java utilizando (eclipse).
Para comenzar necesitamos saber como fusiona una pila y esto es una simple descripción que nos dice:
"Primero en entrar último en salir" 
Esto es lo que nos describe una pila de que el primer elemento que entra es el último que sale, como se muestra en la figura:

En la entrada se ve que el primero en entrar es "a" y en la salida se ve que el último en entrar es "a".

Para el manejo de la pila necesitaremos el uso de un vector y de un tope en donde este tope nos indicara si la pila esta llena o no con la figura:

Ahora bien necesitaremos sus métodos para una pila simple los cuales son:
- Su constructor: Pila()
- Para ver si esta vacía: esvacia()// tipo boolean
- Para ver si esta llena: esllena()// tipo boolean
- Para adicionar: adicionar()
- Para Eliminar: eliminar()
- Para llenar: llenar()
- Para mostrar: mostrar()
- Para vaciar: vaciar()
- Para el numero de elementos: nroelem()
Esos llegan hacer sus métodos principales de una pila simple y su diagrama de clase es:

Pila
Int max=100
String V[max]//o cualquier otro tipo
Int tope
Pila()
esvacia()
esllena()
adicionar(String elem)
eliminar()
llenar(int n)
mostrar()
vaciar(Pila Z)
nroelem()

Código en eclipse:

public class Pila {
int max=100;
String[] V = new String [max];
int tope;
void pila(){
tope=0;
}
boolean esvacia(){
if(tope==0)
return true;
return false;
}
boolean esllena(){
if (tope==max)
return true;
return false;
}
void adicionar(String elem){
if(esllena())
System.out.println("pila llena");
else{

tope=tope+1;
V[tope]=elem;
}
}
String eliminar(){
String elem;
if(esvacia())
System.out.println("pila vacia");
else{
elem=V[tope];
tope=tope-1;
return elem;
}
return "";
}
void llenar(int n){
String x;
Scanner leer=new Scanner(System.in);
for(int i=1;i<=n;i++){
x=leer.next();
adicionar(x);
}
}
void mostrar(){
Pila aux=new Pila();
while(!esvacia()){
String x=eliminar();
System.out.println(x);
aux.adicionar(x);
}
while(!aux.esvacia()){
adicionar(aux.eliminar());
}
}
void vaciar(Pila Z){
while(!Z.esvacia()){
adicionar(Z.eliminar());
}
}
int nroElemen(){
return tope;
}
}

Ahora para una Pila de Objetos:
El código anterior solo era para una pila simple ahora que pasa para una pila de objetos, utiliza los mismos métodos con algunas variaciones, se compone de esta manera:
Y sus códigos son:

De la Persona:
 import java.util.Scanner;

public class Persona {
String nombre;
String ci;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getCi() {
return ci;
}
public void setCi(String ci) {
this.ci = ci;
}
public void leer(){
Scanner lee=new Scanner(System.in);
nombre=lee.next();
ci=lee.next();
}
public void mostrar(){
System.out.println(nombre+" "+ci);
}
}
Este es nuestro objeto de personas, ahora la Pila:

public class Pila {
int max=20;
Persona []v=new Persona[max];
int tope;
void Pila(){
tope=0;
}
boolean esvacia(){
if(tope==0)
return true;
return false;
}
boolean esllena(){
if(tope==max){
return true;
}
return false;
}
void adiconar(Persona x){
if(esllena()){
System.out.println("pila llena");
}else{
tope++;
v[tope]=x;
}
}
void llenar(int n){
for(int i=1;i<=n;i++){
Persona p=new Persona();
p.leer();
adiconar(p);
}
}
Persona eliminar(){
Persona x=new Persona();
if(esvacia()){
System.out.println("pila vacia");
}else{
x=v[tope];
tope--;
}
return x;
}
void mostrar(){
Pila aux=new Pila();
while(!esvacia()){
Persona x=eliminar();
x.mostrar();
aux.adiconar(x);
}
while(!aux.esvacia()){
adiconar(aux.eliminar());
}
}
void vaciar(Pila z){
while(!z.esvacia())
adiconar(z.eliminar());
}
int nroelem(){
return tope;
}
}

1 comentario: