struct noArvore* procura(struct noArvore *ptr,int info) { if(ptr!=NULL) if(info < ptr->info) ptr=procura(ptr->esquerda,info); else if( info > ptr->info) ptr=procura(ptr->direita,info); return(ptr); }/*Fim da procura()*/
Node * procura (Node * raiz, int num){ if (raiz != NULL){ if (raiz->data == num) { return raiz; } else if (num > raiz->data){ return procura(raiz->right, num); } else { return procura(raiz->left, num); } } return NULL; }
int main(){ Aluno a1 = {10885 , "Alcino", 18.5}; Aluno a2 = {77782, "Mariana", 9.5}; Aluno a3 = {79175, "Vitor", 6.5}; Turma t = NULL; insere(&t, a2); insere(&t, a1); insere(&t, a3); imprime(t); /* Teste das novas funções */ Aluno * aux; aux = procura(t, 77782); printf("%s\n", aux->nome); //Procura a Mariana e imprime o seu nome a2.nota = 10.5; printf("Nota da mariana antes do update: %f\n", aux->nota); update(t, a2); printf("Nota da mariana depois do update: %f\n", aux->nota); printf("Nº de aprovados: %d\n", aprovados(t)); freet(t); return 0; }
int update(Turma t, Aluno a){ //Atualiza o Aluno colocando o novo aluno recebido como parametro. Aluno * aux; aux = procura(t, a.numero); if(aux){ *aux = a; return 0; } else return 1; }
main() { bool ht_inc; int info ; int escolha; struct noArvore *raiz = (struct noArvore *)malloc(sizeof(struct noArvore)); raiz = NULL; while(1) { printf("Arvore AVL\n"); printf("Menu: \n"); printf("1.Insere\n"); printf("2.Mostrar\n"); printf("3.Sair\n"); printf("Entre com sua escolha: "); scanf("%d",&escolha); switch(escolha) { case 1: printf("Entre com o numero a ser inserido: "); scanf("%d", &info); if( procura(raiz,info) == NULL ) raiz = insere(info, raiz, &ht_inc); else printf("\nValor duplicado ignorado.\n"); break; case 2: if(raiz==NULL) { printf("\nArvore vazia.\n"); continue; } printf("Arvore balanceada: \n"); mostrar(raiz, 1); printf("\n\n"); printf("Em ordem: "); ordenado(raiz); printf("\n"); break; case 3: exit(1); default: printf("Escolha invalida\n"); }/*Final do menu*/ }/*Final do enquanto*/ }/*Fim do menu()*/
void resolve() { int topo, passos, x, y; item atual; item pilha[32]; topo = 0; passos = 0; x = 0; y = 0; atual.pos.x = 0; atual.pos.y = 0; atual = procura( atual, &x, &y ); while ( ganhou() ) { getchar(); printf("X = %d Y = %d Mov = %d x = %d y = %d P = %d \n", atual.pos.x, atual.pos.y, atual.mov, x, y, passos); desenha(); while ( atual.mov <= 4 ) { if ( podemov(atual) ) { printf("Empilhando - \n"); empilha( pilha, &topo, atual ); atualizatab( atual, &atual ); x = 0; y = 0; passos++; getchar(); printf("X = %d Y = %d Mov = %d x = %d y = %d P = %d \n", atual.pos.x, atual.pos.y, atual.mov, x, y, passos); desenha(); } else atual.mov++; } if ( atual.mov > 4 ) { if ( x >= 6 && y >= 4 ) { if ( topo == 0 ) { printf("Sem Solucao."); break; } else { printf("Backtrack - \n"); atual = topodapilha( pilha, topo ); desatualizatab( atual ); x = atual.pos.x; y = atual.pos.y; atual.mov++; desempilha( &topo ); passos--; } } } } imprimesol(pilha, topo); }
void main(){ procura(); }