filaR.cpp

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------
00002 #include <stdlib.h>
00003 #ifdef WIN32
00004 #pragma hdrstop
00005 #endif
00006 
00007 #include "filaR.h"
00008 #include "erro.h"
00009 
00010 TFilaR::TFilaR(){
00011      mFila = (Fila_ptr) malloc(sizeof(Fila_t));
00012      if (!mFila) FatalError("Memória FilaR");
00013      mFila->Head = NULL;
00014      mFila->Next = NULL;
00015      mFila->Atual = NULL;
00016      mFila->Size = 0;
00017 }
00018 //---------------------------------------------------------------------------
00019 TFilaR::~TFilaR(){
00020  delete mFila;
00021 }
00022 //---------------------------------------------------------------------------
00023 void  TFilaR::Insere(int Raiz,double Desvio,long Populacao){
00024    Item_ptr novo;
00025 
00026     novo=(Item_ptr) malloc(sizeof(Item_t));
00027     if (!novo) {
00028       FatalError("Falta de memória!");
00029     }
00030     novo->Raiz = Raiz;
00031     novo->Desvio = Desvio;
00032     novo->Queda = 0;
00033     novo->Populacao = Populacao;
00034     novo->Proximo = mFila->Head;
00035 
00036     mFila->Head = novo;
00037     mFila->Atual = novo;
00038     mFila->Next = novo;
00039     (mFila->Size)++;
00040 }
00041 //---------------------------------------------------------------------------
00042 void  TFilaR::Retira(int Raiz){
00043   Item_ptr Aux,Prev;
00044 
00045   if(!mFila->Size) {
00046     FatalError("Fila Vazia!");
00047   }
00048 
00049   Aux = mFila->Head;
00050   if(Aux->Raiz == Raiz) {
00051     mFila->Head = Aux->Proximo;
00052     (mFila->Size)--;
00053   } else {
00054      while (Aux && Aux->Raiz != Raiz){
00055        Prev = Aux;
00056        Aux = Aux->Proximo;
00057      }
00058      Prev->Proximo = Aux->Proximo;
00059      (mFila->Size)--;
00060      free(Aux);
00061   }
00062   mFila->Atual = mFila->Head;
00063   mFila->Next = mFila->Head;
00064 }
00065 //---------------------------------------------------------------------------
00066 int  TFilaR::Proximo(){
00067   int i;
00068   if(!mFila->Next) {
00069     mFila->Next = mFila->Head;
00070     mFila->Atual = mFila->Head;
00071     return -1;
00072   }
00073   i = mFila->Next->Raiz;
00074   mFila->Atual = mFila->Next;
00075   mFila->Next = mFila->Next->Proximo;
00076   return i;
00077 }
00078 //---------------------------------------------------------------------------
00079 

Generated on Sun Jul 29 04:01:04 2012 for TerraLib - Development Source by  doxygen 1.5.3