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;
}
Esempio n. 4
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;
}