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
1.5.3