Facebook Twitter RSS Reset

Pilas y colas en Java

Saludos a todos.

Ya habia escrito algo sobre esto, pero nunca en taringa, las pilas y colas son un tema muy tratado en cualquier disciplina que tenga que ver con informatica y computadores, y aunque es facil de enterder para algunos es dificil de programar.

Les dejo mi codigo y explicacion.

Según lo que he aprendido, las pilas y colas no son estructura de datos, mas bien son formas de acceder a la información contenida en una estructura de dato como puede ser una lista o vector, entre otras.

Definiciones:

Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. (por wikipedia).

Operaciones de la pila: Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual.

Crear: se crea la pila vacía (size).

Apilar: se añade un elemento a la pila.(push)

Desapilar: se elimina el elemento frontal de la pila.(pop)

Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)

Vacía: devuelve cierto si la pila está vacía o falso en caso contrario (empty).

Codigo Pila:

//Autor: Rey Salcedo Padilla

import java.util.ArrayList;

public class Pila extends ArrayList{

//se añade un elemento a la pila.(push)

public void apilar(Object dato){

if(dato != null){

this.add(dato);

}else{

System.out.println(“Introduzca un dato no nulo”();

}

}

//se elimina el elemento frontal de la pila.(pop)

public void desapilar(){

if(size() > 0){

this.remove(this.size()-1);

}

}

//devuelve el elemento que esta en la cima de la pila. (top o peek)

public Object cima(){

Object datoAuxiliar = null;

if(this.size() > 0){

datoAuxiliar = this.get(this.size()-1);

}

return datoAuxiliar;

}

//devuelve cierto si la pila está vacía o falso en caso contrario (empty).

public boolean vacia(){

return this.isEmpty();

}

}

Una cola (también llamada fila) es una estructura de datos (no estoy deacuerdo), caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.(por wikipedia).

Operaciones Básicas de una Cola

Crear: se crea la cola vacía.

Encolar (añadir, entrar, insertar): se añade un elemento a la cola. Se añade al final de esta.

Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entró.

Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entró.

Vacía: devuelve cierto si la pila está vacía o falso en caso contrario (empty).

//Autor:Rey Salcedo Padilla import java.util.ArrayList;

public class Cola extends ArrayList{ //se añade un elemento a la cola. Se añade al final de esta.

public void encolar(Object dato){

if(dato != null){

this.add(dato);

}else{

System.out.println(“Introduzca un dato no nulo”();

}

} //se elimina el elemento frontal de la cola, es decir, el primer elemento que entró.

public void desencolar(){

if(this.size() > 0){

this.remove(0);

}

} //se devuelve el elemento frontal de la cola, es decir, el primer elemento que entró.

public Object frente(){

Object datoAuxiliar = null; if(this.size() > 0){

datoAuxiliar = this.get(0);

}

return datoAuxiliar;

} //devuelve cierto si la pila está vacía o falso en caso contrario (empty).

public boolean vacia(){

return this.isEmpty();

}

}

Ahora hagamos uso de las clases pilas y colas:

//Autor:Rey Salcedo Padilla

public class Main{

public static void main(String []args){

System.out.println( “——Pila——” ) ;

Pila pila = new Pila() ;

pila.apilar( “A” ) ;

pila.apilar( “B” ) ;

pila.apilar( “C” ) ;

pila.apilar( “D” ) ;

System.out.println(“Esta vacia la pila?:” + pila.vacia()) ;

System.out.println(“Tamaño de la pila:” + pila.size()) ;

System.out.println(pila.cima()) ;

pila.desapilar() ;

System.out.println(pila.cima()) ;

pila.desapilar() ;

System.out.println(pila.cima()) ;

pila.desapilar() ;

System.out.println(pila.cima()) ;

pila.desapilar() ;

System.out.println(“Esta vacia la pila?:” + pila.vacia()) ;

System.out.println( “——Cola——” ) ;

Cola cola = new Cola() ;

cola.encolar( “A” ) ;

cola.encolar( “B” ) ;

cola.encolar( “C” ) ;

cola.encolar( “D” ) ;

System.out.println(“Esta vacia la cola?:” + cola.vacia()) ;

System.out.println(“Tamaño de la cola:” + cola.size()) ;

System.out.println(cola.frente()) ;

cola.desencolar() ;

System.out.println(cola.frente()) ;

cola.desencolar() ;

System.out.println(cola.frente()) ;

cola.desencolar() ;

System.out.println(cola.frente()) ;

cola.desencolar() ;

System.out.println(“Esta vacia la cola?:” + cola.vacia()) ;

}

}

Si les gusto y quieren ver mas algoritmos entren a mi blog www.usandojava.blogspot.com

No comments yet.

Leave a Comment