void liberaNo(Arvore* no){ if(!arvoreVazia(no)){ liberaNo(no->esq); liberaNo(no->dir); free(no); } }
void liberaArvore(Arvore* arvore){ if(arvoreVazia(arvore)){ printf("Árvore vazia!\n"); exit(1); } liberaNo(arvore); }
/* * Árvore binária cheia representada * pelo seguinte modelo: * * 1 * / \ * 2 3 * / \ / \ * 4 5 6 7 */ int main(void){ Arvore* arvore = criaNo(1, criaNo(2, criaNo(4, criaNoVazio(), criaNoVazio() ), criaNo(5, criaNoVazio(), criaNoVazio() ) ), criaNo(3, criaNo(6, criaNoVazio(), criaNoVazio() ), criaNo(7, criaNoVazio(), criaNoVazio() ) ) ); arvoreImprime(arvore); arvorePertence(3, arvore); arvorePertence(8, arvore); arvoreNivel(5, arvore); liberaNo(arvore); return 0; }
void liberaListaGen(listaGen l, void f(void*)){ if(l != NULL){ no aux, prox; for(aux = l->ini; aux != NULL; aux = prox){ prox = aux->prox; liberaNo(aux, f); } } FREE(l); }
int main(int argc,char** argv) { FILE *input = NULL,*output = NULL; lista_enc_t *listaTarefas = NULL,*listaPrioridade = NULL; int i; no_t *no; task_t *runningTask=NULL,*previousTask=NULL; input = fopen(argv[1],"r"); if(input == NULL){ fprintf(stderr,"Erro: Arquivo de leitura invalido."); exit(EXIT_FAILURE); } int HP = hiperPeriod(input); listaTarefas = criaListaDeTarefas(input); listaPrioridade = criaListaEncadeada(); fclose(input); output = fopen(argv[2],"w"); if(output != NULL) taskImprimeCabecalho(listaTarefas,output); for(i=0;i<=HP;i++){ taskManegement(listaTarefas,listaPrioridade,&runningTask,&previousTask,i,output); } if(output != NULL){ taskImprimeFim(listaTarefas,output); fclose(output); } no = listaCabeca(listaPrioridade); liberaNo(no); liberaLista(listaPrioridade); no = listaCabeca(listaTarefas); liberaNo(no); liberaLista(listaTarefas); return 0; }