Estou confuso com um código-fonte que eu peguei com um aluno da minha sala da faculdade.
Segue abaixo:
import java.io.*;
import javax.swing.*;
public class Fila
{
private int[] F;
private int Back,Front,Tamanho,R;
public void InserirFila(int Valor)
{
R=(Front%(Tamanho-1))+1;
if (R!=Back)
{
F[R]=Valor;
Front=R;
if (Back==0) Back=1;
System.out.println("Valor Inserido!");
}
else
{
System.out.println("Pilha cheia!");
}
}
public void RemoveFila()
{
if (Front==0)
{
System.out.println("Pilha ja esta vazia");
}
else
{
if (Front==Back)
{
Front=0;
Back=0;
}
else
{
Back=(Back%(Tamanho-1))+1;
System.out.println("Valor Removido!");
}
}
}
public void GetBottom()
{
System.out.println("Valor da posicao "+Back+" eh "+F[Back]);
}
public Fila(int x)
{
F=new int[x];
Tamanho=x;
Back=0;
Front=0;
}
public static void main(String args[])
{
try
{
Fila a = new Fila(Integer.parseInt(args[0]));
a.InserirFila(Integer.parseInt(args[1]));
a.GetBottom();
a.RemoveFila();
}
catch(ArrayIndexOutOfBoundsException z)
{
System.out.println("ERRO!");
System.exit(0);
}
catch(NumberFormatException z)
{
System.out.println("ERRO!");
System.exit(0);
}
}
}
As partes que me deixam confuso são:
1- Por que usa-se o “%(tamanho-1)+1” tanto para o inseror como para o remover??
2- Por que no GetBottom() imprime-se “back” e depois “F[back]”?
Por enquanto é isso que tá me deixando meio doido aqui…
Desde já, agradeço pela ajuda!