lunes, 28 de abril de 2014

Cola Circular

//Programa de Colas con Arreglos en Forma Circular
import java.util.Scanner;
public class ColaCircular
{

public  ColaCircular()
    {
   
    }
    public static int Frente=0, Final=0;
    public static void main(String[] args)
{
    //Declaracion de variables y creacion del arreglo
    int Max,Opcion;
    int [] colacir;
   
    Scanner entrada = new Scanner (System.in);
   
    //Solicita el tamaño del arreglo
    System.out.println ("Ingrese el tamaño del arreglo");
    Max=entrada.nextInt();
    colacir = new int [Max];
        Final=Max;
        Final = Max - 1;
    Frente = Siguiente(Final,Max);
        // Creando menu de datos
        do
        {
        System.out.println("---------------Menu----------------");
        System.out.println(" 1)Insertar (Ingresar Datos a Cola) ");
        System.out.println(" 2)Eliminar (Eliminar datos de Cola) ");
        System.out.println(" 3)Presentar Cola ");
        System.out.println(" 4)Limpia Cola ");
        System.out.println(" 5)Salir /n");
        System.out.println(" Seleccione un opcion ");
Opcion =entrada.nextInt();

//Alimentando la opcion elejida mendiante un swich
switch (Opcion)
        {
        case 1 :  Insertar(colacir,Max);
        break;

case 2 :  Eliminar (colacir,Max);
        break;

case 3 :  Presentar(colacir,Max);
        break;

case 4 :  Frente=0;
 Final=Max;
 System.out.println("La pila se ha vaciado");
        break;

case 5 :  break;
default : System.out.println(" Opcion Incorrecta Teclea una del Menu ");
break;
        }
        }while (Opcion !=5);
    }


public static int Siguiente (int p, int m) //alojara la posicion
{
return (p+1) % m;//%modulo extrae el residuo de una division estrallendo
//el valor del siguiente de fin
}
public static void Insertar (int[]c, int m)
{
Scanner entrada= new Scanner (System.in);
System.out.println(Siguiente(Final,m));
if(Frente==Siguiente(Siguiente(Final,m),m))
System.out.println("Cola LLENA");
else
{
System.out.println("Ingrese el valor");
Final=Siguiente(Final,m);
c[Final]=entrada.nextInt();

}
}
public static void Eliminar(int[]p, int m)
{
if (Frente==Siguiente(Final,m))
{
System.out.println("   Cola Vacia");
}
else
{
System.out.println("Eliminado el elemento <<"+Frente+">> =" +p[Frente]);
Frente=Siguiente(Frente,m);
}

}
public static void Presentar(int []p, int m)
{
        for(int i=Frente; i!=Siguiente(Final,m); i++)
      {
        System.out.println("Cola["+i+"] = "+p[i]);
      }
     }
   
}