Hola a tod@s!! Ahí va ejercicio:
Enunciado:
Tenemos que programar una cola empleando una lista enlazada, con los siguientes métodos:
-encolar elementos(public void enqueue(tipoElem elemento))
-desencolar elementos( con el método dequeue)
-método que diga si la cola está vacía (al ser una lista dinámica, jamás se puede llenar, luego el método que nos dice si está llena la cola, no existe)
-método que imprime por pantalla todo el contenido de la cola.
Nuestra cola almacenará pilas, es decir, tenemos que programar una clase Pila que contenga los siguientes métodos:
-método para introducir un elemento en una pila(push)
-método para extraer un elemento de una pila(pop)
-método que indique si la pila está vacía
-método que indique si la pila está llena
-método que imprima por pantalla el contenido de la pila.
A su vez, cada pila almacenará vectores, habrá un vector en cada una de las posiciones de cada pila, es decir, cuando invoquemos los métodos push y pop, introduciremos un vector y nos devolverá un vector, respectivamente.
*He hecho el esquema con un dibujito…pero no sé cómo meterlo aqui, lo siento.
Conceptos fundamentales:
Listas enlazadas(dinámicas): Es una lista de datos que puede crecer o disminuir con el tiempo. Estas listas son un conjunto de ‘cajas’ enlazadas, las cuales contienen objetos guardados. El objeto nodo es donde metemos lo que queremos añadir (en este caso pilas), es un envoltorio. La clase Nodo tiene 2 atributos, uno es el objeto guardado(no es que esté guardado físicamente, sino que hay una referencia a dicho objeto) y otro es la referencia, objeto de tipo Nodo ya que apunta a otro nodo.
Cola y Pila: Son estructuras de datos básicas que permiten almacenar elementos, estableciendo un orden de llegada y salida. Utilizan las políticas de inserción/obtención de elementos FIFO y LIFO, respectivamente
Solución:
//clase Pila
import java.util.Vector ;
import java.util.Enumeration;
public class Pila{
private int numVectores;
private Vector vectores[]; //Array de tipo Vector
private int indice; //apunta al ultimo vector insertado
public Pila (int numVectores){
this.numVectores=numVectores;
indice=-1;
vectores=new Vectores[numVectores];
}
//pila vacia
public bolean vacia(){
return(indice== -1);
}
//pila llena
public bolean llena(){
return(indice==numVectores-1);
}
public void push(Vector vector){
indice++;
vectores[indice]=vector;
}
public Vector pop(){
Vector vector=vectores[indice];
indice–;
return vector;
}
public void imprimir(){
for(int i=0; i<indice;i++)
System.out.println(this.get(i)+”,”);
}
}//fin clase Pila
//Clase Nodo
public class Nodo{
private Nodo nodoSiguiente;
private Pila ppila;
public Nodo(){
nodoSiguiente=null;
ppila=null;
}
public Nodo(Pila pila,Nodo n){
ppila=pila;
nodoSiguiente=n;
}
public void setPila(Pila pila){
ppila=pila ;
}
public void setSiguiente(Nodo n){
nodoSiguiente=n;
}
public Pila getPila(){
return ppila;
}
public Nodo getSiguiente(){
return nodoSiguiente;
}
}//fin clase Nodo
public class Cola{
Nodo superior=null;
Nodo inferior=null;
public void enqueue(Pila pila){
if(pila !=null)
Nodo n=new Nodo();
n.setPila(pila);
if(inferior!=null){
inferior.setSiguiente(n);
inferior=n;
}else{
superior=inferior=n;
}
public Pila dequeue(){
if (superior=null)
return null;
Pila pila=superior,getPila();
superior=superior.getSiguiente();
if(superior==null)
inferior=null;
return pila;
}
public boolean vacia(){
return (superior==null);
}
public void imprimir(){
if (vacia()){
System.out.println(“La Cola está vacía”);
}else{
System.out.println(“Dame un elemento (pila) de la cola:”+dequeue().imprimir());
}//fin else
}//fin imprimir
}//fin clase Cola
jc dicho:
on octubre 6, 2008 at 6:06 pm
esta muy bueno el problema, pero apenas estoy empezando en Java, seria tan amable de montar el proyecto completo para verlo funcionar, o indicarme como hacerlo.
Gracias