FILA CIRCULAR

Java

25/05/2011

ola pessoal, fiz esse codigo que representa uma fila circular, mais não esta correto, ate consigo inserir os valores mais não consigo removelos, e mesmo inserindo ele não
insere corretamente, alquem poderia me ajudar por favor ...
[CODE]public class FilaCircular {  static final int TAMANHO = 5;; //-- tamanho do arranjo
 /* outros elementos constantes do item*/
 static int inicio;
 static int fim;
 static int[]vetor = new int[TAMANHO];
 
 public void iniciarFilaC(){
 inicio = vetor.length -1;
 fim = vetor.length - 1;
 }
 
 public static boolean filaCVazia (){
  if(fim==inicio){
   return true;
  }
  else{
   return false;
  }
 }
 
 public boolean filaCCheia (){
  int posicao;
 if (fim == vetor.length-1){
  posicao = 0;
 }  else{
  posicao = fim + 1; 
 }
 if (inicio== posicao){
  return true;
 }
 else{
 return false; 
 }
 }
 public void incluirFilaC (int valor){
  if (filaCCheia()){
   System.out.print("erro");
  }
  //-- ocorreu transbordo da capacidade (overflow)
  else if (fim < vetor.length - 1){
    fim = fim + 1;
    print(); 
   }
   else{
    fim = 0;
   }
   vetor[fim ] = valor;
  System.out.println("Inserindo elemento:" + vetor[fim]);
 }
 public int removerFilaC (){
  int valor;
 if (filaCVazia()){
  System.out.print("erro");
 }
 else if (inicio < vetor.length - 1){
   inicio = inicio + 1;
   print(); 
  }
 else{
  inicio = 0; 
 }
 valor  = vetor[inicio];
 System.out.println("removendo elemento:" + vetor[inicio]);
 return valor; 
 }
 
 public void print() {
  System.out.println("***********************************************");
  System.out.println("Fila=[inicio=0, fim=" + fim + "]");
  for (int i = 0; i < fim; i++) {
   System.out.println("Elemento na pos " + i + ", valor:" + vetor[i]);
  }
  System.out.println(" ");  }
 
 public static void main(String[] args) {
  FilaCircular f = new FilaCircular();
  f.incluirFilaC(8);
  f.incluirFilaC(6);
  f.incluirFilaC(10);
  f.removerFilaC();
  for(int i=0;i
Edmilson Reis

Edmilson Reis

Curtidas 0

Respostas

Dyego Carmo

Dyego Carmo

25/05/2011

Voce pode utilizar a CircularList do Javaassit para isto :)

Valeu !

GOSTEI 0
Edmilson Reis

Edmilson Reis

25/05/2011

Dyego eu to bem no inicio em java, não sei quase nada, nem sei o que é isso CircularList do Javaassit , mais meu professor que esse codigo, ele passou em portugues estruturado, eu implementei, mais não esta certo, mas  eu preciso arrumar esse codigo senão não vai valer nota, mais agradeço a ajuda...
GOSTEI 0
Robson Teixeira

Robson Teixeira

25/05/2011

Olá Edmilson segue a sua classe alterada

public class FilaCircular {
    static final int TAMANHO_INICIAL = 5; //-- tamanho inicial
     private int quantidade=0;
     private Integer[]vetor = new Integer[TAMANHO_INICIAL];     
     
     public  boolean isFilaVazia (){
         return quantidade==0;
     }
     
     public boolean isFilaCheia(){
         for (Integer elementFila : vetor) {
                 if(elementFila==null){
                     return false;
                 }
         }
         return true;
     }
     public void incluirFilaC (int valor){
      if (isFilaCheia()){
          //Copia os valores para o vetor auxiliar acrecendo de mais um espaço
          // e retorna para vetor.
          Integer filaNova [] = new Integer [vetor.length+1];
          for (int i = 0; i < vetor.length; i++) {
              filaNova[i]= vetor[i]; 
          }
          vetor=filaNova;
          quantidade++;
          return;
         
      }
      int pos=0;
       for (Integer elementFila : vetor){
          if(elementFila==null){
              vetor[pos]=valor;
              quantidade++;
              break;
          }
          pos++;
       }   
     
     }
     public void removerFilaC (){
         if(isFilaVazia()){
             System.out.println("Erro ao Remover da fila pois a mesma está vazia");
             return;
         }
         Integer filaNova [] = new Integer [vetor.length-1];
          for (int i = 1; i < vetor.length; i++) {
              filaNova[i-1]= vetor[i]; 
          }
          vetor=filaNova;
          quantidade--;
          print();
     }
     
     public void print() {
      System.out.println("***********************************************");
      System.out.println("Fila=[inicio=0, fim=" + quantidade + "]");
      for (int i = 0; i < quantidade; i++) {
       System.out.println("Elemento na pos " + i + ", valor:" + vetor[i]);
      }
      System.out.println(" ");

     }
     
     public static void main(String[] args) {
         
      FilaCircular f = new FilaCircular();
      f.incluirFilaC(8);
      f.incluirFilaC(6);
      f.incluirFilaC(10);
      f.incluirFilaC(1);
      f.incluirFilaC(7);
      f.incluirFilaC(5);
      f.removerFilaC();
     
     }
}

espero ter ajudado
att
robson
GOSTEI 0
POSTAR