// ColaCircular.java
// Este programa utiliza arreglos para la representacion de Colas Circulares
// y se ejecuta en modo texto
// Compilar: javac ColaCircular.java
// Ejecutar: java ColaCircular
// ========================================================
import java.io.*;
public class ColaCircular {
public static class ClaseColaCircular { // Declaracion de la clase de la Cola Circular
static int max=5; // Tamano maximo de la Cola Circular
static int colacirc[]=new int[max]; // Declaracion del arreglo para almacenar la Cola Circular
static int frente, fin; // Inidicadores del inicio y final de la Cola Circular
ClaseColaCircular() { // Constructor que inicializa el frente y el final de la Cola Circular
frente=-1; fin=-1;
System.out.println("Cola circular inicializada !!!");
}
public static void Mostrar() {
int i=0;
System.out.println("\n\n<<< MOSTRAR COLA CIRCULAR >>>");
if(frente==-1) {
System.out.println("\nCola Circular vacia !!!");
}
else {
i=frente;
do {
System.out.println("colacirc["+i+"]="+colacirc[i]);
i++;
if(i==max && frente>fin) i=0; // Reiniciar en cero (dar la vuelta)
}while(i!=fin+1);
}
System.out.println("frente="+frente);
System.out.println("fin="+fin);
System.out.println("max="+max);
}
public static void Insertar(int dato) {
if((fin==max-1 && frente==0) || (fin+1==frente)) {
System.out.println("\nCola Circular llena !!!");
return;
}
if(fin==max-1 && frente!=0) fin=0; else fin++;
colacirc[fin]=dato;
if(frente==-1) frente=0;
}
public static void Eliminar() {
System.out.println("\n\n<<< ELIMINAR DATO >>>");
if(frente==-1) {
System.out.println("Cola Circular vacia !!!");
return;
}
System.out.println("Dato eliminado = "+colacirc[frente]);
if(frente==fin) {
frente=-1; fin=-1;
return;
}
if(frente==max) frente=0; else frente++;
}
}
// Declaracion del objeto ColaCircular
static ClaseColaCircular ColaCircular=new ClaseColaCircular();
// Funcion principal
public static void main(String args[]) throws IOException {
int op=0;
do {
System.out.println("\n\n<<< COLAS CIRCULARES >>>");
System.out.println("1.- Insertar");
System.out.println("2.- Eliminar");
System.out.println("3.- Mostrar");
System.out.println("0.- Salir");
System.out.print("Opcion? ---> ");
op=getInt();
switch(op) {
case 1 : Altas(); break;
case 2 : ColaCircular.Eliminar(); break;
case 3 : ColaCircular.Mostrar(); break;
}
}while(op!=0);
}
public static void Altas() throws IOException {
int dato;
System.out.println("\n\n<<< ALTAS >>>");
System.out.print("Dato a insertar? ---> ");
dato=getInt();
ColaCircular.Insertar(dato); //Invocar el metodo Insertar del objeto ColaCircular
}
// Funcion para capturar una cadena desde el teclado
public static String getString() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}
// Funcion para capturar un entero desde el teclado
public static int getInt() throws IOException {
String s = getString();
return Integer.parseInt(s);
}
}
Suscribirse a:
Enviar comentarios (Atom)
Excelente aportación muchas gracias, lo estudiare para tratar de implementarlo en mi proyecto, saludos.
ResponderEliminarEXCELENTE! gran trabajo me sirvio mucho
ResponderEliminarsigue compartiendo tu conocimiento (Y)
este código tiene un pequeño error en el método de eliminar:
ResponderEliminarif(frente==max) frente=0; else frente++;
en esta parte debe incrementar primero frente y después preguntar si frente es igual a max, de la forma en la que está, frente nunca tomara el valor de 0 sin antes desbordar el programa
quedaría así:
frente++;
if(frente==max) frente=0;
Espero no se tome a mal mi comentario, me fue de mucha ayuda el ejemplo, excelente trabajo, dejo mi correo para cualquier comentario.
ardi_gm@hotmail.com
se puede hacer un programa de cola circular que no pida object...
ResponderEliminaruna pregunta, puede sonar absurdo pero por que inicio y fin se inicia con -1 ?
ResponderEliminarpor el incremento que se hará en cada vuelta del ciclo (+1)
Eliminary los espacios de un vector empiezan con cero
EliminarBuen día comunidad....Una pregunta: ¿Cómo podría buscar un elemento dentro de la cola circular?
ResponderEliminar