void print_in (struct arvore * tree)//imprime em ordem { if (tree==NULL) return; print_in(tree->esq); printf(" %d ",tree->chave); print_in(tree->dir); }
void task_monitor(){ while(1){ ACoreOs_task_wake_after(3000); int i; int flag; ACoreOs_task_state state; for(i = 0; i < globalInstrumentIndex; i ++){ flag = ACoreOs_task_get_state(globalInstrumentInfo[i].taskId, &state); if(flag == ACOREOS_INVALID_ID) continue ; else if(flag == ACOREOS_INVALID_ADDRESS){ printk_spinLock("ACOREOS_INVALID_ADDRESS!!\n"); ACoreOs_task_wake_after(1000); break ; }else{ if((state & ACOREOS_TASK_STATES_WAITING_FOR_MUTEX) == 0) break ; } } if(i == globalInstrumentIndex){ print_in(); ACoreOs_task_delete(ACOREOS_SELF); } } }
int menu ()//funcao que imprime o menu e executa a opcao escolhida { int i,j,n,a; printf("\nO que deseja fazer agora? Digite o numero com sua opcao:\n"); printf("1. Adicionar novos numeros.\n2. Remover um numero.\n3. Buscar um numero.\n4. Imprimir a arvore.\n5. Sair\nOpcao: "); scanf("%d",&i); switch (i)//pula para a opcao escolhida. { case 1: { printf("Quantos numeros pretende entrar? "); scanf("%d",&n); while (n<1) { printf("Entre com pelo menos um numero. Quantos valores deseja entrar? "); scanf("%d",&n); } printf("Entre com os numeros:\n"); for (j=0;j<n;j++) { scanf("%d",&a); adicionar (a); } printf("Numeros adicionados!\n"); return 0; } case 2: { printf("Qual numero voce deseja remover? "); scanf("%d",&a); if (busca(root,a)==1) { remover(a); printf("Item removido!\n"); return 0; } else { printf("O item nao pode ser removido pois nao se encontra na arvore.\n"); return 0; } } case 3: { printf("Qual numero deseja buscar? "); scanf("%d",&a); if (busca(root,a)==1) printf("Numero encontrado! Ele ja esta na arvore.\n"); else printf("Numero nao encontrado.\n"); return 0; } case 4://conta com um switch interno, para que se escolha como sera impressa a arvore { printf("Como voce deseja imprimi-los?\n1. Em ordem.\n2. Pre-ordem.\n3. Pos-ordem.\n4. Labelled bracketing.\nOpcao: "); scanf("%d",&j); switch (j) { case 1: { print_in(root); printf("\n"); return 0; } case 2: { print_pre(root); printf("\n"); return 0; } case 3: { print_pos(root); printf("\n"); return 0; } case 4: { print_col(root); printf("\n"); return 0; } default: { printf("Ocorreu um erro. Tente novamente.\n"); return 0; } } } case 5: return 1; default: { printf("Ocorreu um erro. Tente novamente.\n"); return 0; } } }