TGrafo* insere_no(TGrafo* g, char* no){ if(busca(g,no)){ return g; } TGrafo * novo = (TGrafo*) malloc(sizeof(TGrafo)); novo->info = (char*) malloc(sizeof(char)*20); strcpy(novo->info, no); novo->prim = NULL; novo->prox = g; return novo; }
int busca(int* A, int esq, int dir, int x){ int meio = (dir - esq)/2 + esq; if(dir < esq){ return -1; } if(dir == esq && A[esq] != x){ return -1; } if(A[meio] > x){ return busca(A, esq, meio, x); } if(A[meio] < x){ return busca(A, meio+1, dir, x); } return meio; }
int main(){ pPDDE pP; cria((&pP), sizeof(int)); int x=7; insere(pP, &x); x=9; busca(pP, &x); printf(">>%d\n", x); return 0; }
/** * Testa a função pot. */ int main () { int v[9]; v[0]=1;v[1]=2;v[2]=2;v[3]=4;v[4]=5;v[5]=6;v[6]=7;v[7]=8;v[8]=9; printf ("Teste 1: "); printf ("%d = %d \n", -1, busca(9,v)); printf ("Teste 2: "); printf ("%d = %d \n", -1, busca(9,v)); printf ("Teste 3: "); printf ("%d = %d \n", -1, busca(9,v)); printf ("Teste 4: "); printf ("%d = %d \n", -1, busca(9,v)); printf ("Teste 5: "); printf ("%d = %d \n", -1, busca(9,v)); return 0; }
/************************************** insertar_nodo: Inserta un nodo en el arbol de parsing. ***************************************/ void insertar_nodo(char* padre , char* nombre){ struct Tnodo *aux; auxi=NULL; //aux=busca(root,padre,NULL); busca(root,padre); aux=auxi; if(aux!=NULL){ Agrega_nodo(&aux,nombre); } else {printf("No se pudo insertar %s \n ",nombre); } }
No_Lista* Lista::search(int p){ if(pri == NULL)return NULL; else if(pri->info == p) return pri; No_Lista *aux = busca(p); if(aux->prox != NULL){ return aux->prox; } return NULL; }
int main() { HashTable h; int i; h = nova_tabela(); insere(700, &h); insere(456, &h); insere(300, &h); i = busca(700, &h); printf("%d na posicao %d -> %d\n", 700, i, h.elementos[i]); i = busca(456, &h); printf("%d na posicao %d -> %d\n", 456, i, h.elementos[i]); i = busca(300, &h); printf("%d na posicao %d -> %d\n", 300, i, h.elementos[i]); deleta(300, &h); printf("Apos remocao do 300:\n"); printf("%d na posicao %d -> %d\n", 300, i, h.elementos[i]); return 0; }
void busca(int grafo[5][5], cord cordenadas[5][5], int i, int j) { if(i >= 0 && i < 5 && j >= 0 && j < 5 && !ganhador) { cordenadas[i][j].visitado = 1; if(i == 4 && j == 4) { ganhador = 1; } else { if(i+1 < 5 && grafo[i+1][j] == 0 && !cordenadas[i+1][j].visitado) { busca(grafo,cordenadas,i+1,j); } if(i-1 < 5 && grafo[i-1][j] == 0 && !cordenadas[i-1][j].visitado) { busca(grafo,cordenadas,i-1,j); } if(j+1 < 5 && grafo[i][j+1] == 0 && !cordenadas[i][j+1].visitado) { busca(grafo,cordenadas,i,j+1); } if(j-1 < 5 && grafo[i][j-1] == 0 && !cordenadas[i][j-1].visitado) { busca(grafo,cordenadas,i,j-1); } } } }
void consultarValor(no* raiz){ int num; no* aux; printf("Digite o numero procurado: "); scanf("%d", &num); aux = busca(raiz, num); if (aux == NULL) printf("Nao encontrado!\n"); else{ printf("Encontrado!\n"); printf("O numero %d foi repetido %d vezes\n", num, aux->cont); } }
int remover(LD *L, int num){ no *p; p=busca(L, num); if(p->prox==NULL){ L->fim=p->ant; } if(p->ant==NULL){ L->inicio=p->prox; } p->ant->prox=p->prox; p->prox->ant=p->ant; L->quant--; return 1; }
bool gerenciadorCapturas::remove(capturas captura){ int pos = busca(&captura); stringstream addr; if(pos != -1){ //Existe o registro int size = captura.getSize(); addr << size << "*" << LED->getLED() << "@"; io->writeAtPos(pos,addr.str()); LED->setLED(pos); return true; } return false; }
int main(){ int casos,k,n; scanf("%d",&casos); for(int i = 1; i <= casos; i++){ Lista *l = cria_lista(); scanf("%d",&n); insere_vitima(l,n); scanf("%d",&k); while(l->qtd != 1){ busca(l,k); } printf("Case %d: %d\n",i,l->head->num); } return 0; }
//Retirar lista Elemento* lst2_retira(Elemento* lst, int val) { Elemento* p = busca(lst, val); if (p == NULL) return lst;/* não achou o elemento: retorna lista inalterada */ /* retira elemento do encadeamento */ if (lst == p) /* testa se é o primeiro elemento */ lst = p->prox; else p->ant->prox = p->prox; if (p->prox != NULL) /* testa se é o último elemento */ p->prox->ant = p->ant; free(p); return lst; }
void le_dados(int flag){ // flag = 2 ---> nome e sexo / flag <> 2 ---> somente nome printf("\n\nEntre com o primeiro nome: "); fflush(stdin); gets(nome); strupr(nome); if (flag == 2) if ( busca(root,nome) != NULL ){ printf ( "\nE R R O --> %s ja consta na arvore! \n\n",nome ); strcpy(nome,""); system("pause");} else{ printf("\nQual o sexo de %s: ",nome); fflush(stdin); scanf ( "%s", &sexo ); } }
void retira_aresta(TGrafo *g, char *id1, char *id2){ TGrafo *p = busca(g,id1); if(!p) return; TViz *viz = p->prim, *ant = NULL; while((viz) && (strcmp(viz->info, id2) != 0)){ ant = viz; viz = viz->prox_viz; } if(!viz)return; if(!ant) p->prim = p->prim->prox_viz; else ant->prox_viz = viz->prox_viz; free(viz); }
void menu(no *raiz){ int j = 1; int n, i; printf("Agora que voce ja selecionou os elementos da arvore,\nselecione o que deseja fazer: "); while(j!=0){ printf("\n\n1 : Imprime a arvore em ordem\n2 : Imprime a arvore em preordem\n3 : Imprime a arvore em posordem\n"); printf("4 : Imprime em Labelled Bracketing\n5 : Buscar um numero\n6 : Remover um numero\n7 : Inserir um numero\n"); printf("8 : Sair\n"); scanf("%d", &i); switch(i){ //para cada número que o usuário entrar o programa realizará um comando diferente case 1: ordem(raiz); break; case 2: preordem(raiz); break; case 3: posordem(raiz); break; case 4: lbracketing(raiz); break; case 5: printf("\nEscreva o elemento que deseja buscar: "); scanf("%d", &n); busca(&raiz, n); break; case 6: printf("\nEscreva o elemento que deseja remover, escreva um que esta na arvore! :"); scanf("%d", &n); remover(&raiz, n); break; case 7: printf("Digite o elemento que deseja inserir, digite um que nao esteja na arvore! :"); scanf("%d", &n); inserir(&raiz, n); break; case 8: j=0; break; default : printf("Insira um valor válido!\n"); break; } } return; }
int main (){ char t[MAXS]; char texto[MAXT]; int N; scanf("%d", &N); for (int i = 0; i < MAX; i++) indice[i].clear(); cnt = 1; memset (sig, 0, sizeof (sig)); for (int i = 0; i < N; i++){ scanf("%s", t); add (t, i); } aho(); scanf("%s", texto); busca (texto); return 0; }
Lista* retira (Lista* l, int v) { Lista* p = busca(l,v); if (p == NULL) return l; /* não achou o elemento: retorna lista inalterada */ /* retira elemento do encadeamento */ if (l == p) l = p->proximo; else p->anterior->proximo = p->proximo; if (p->proximo != NULL) p->proximo->anterior = p->anterior; free(p); return l; }
int main(){ tree* arv=NULL; int a=4,x; x = inserir(a,&arv); x=inserir(5,&arv); x=inserir(3,&arv); remover(3,arv); printf("R = %i\n",arv->id); printf("Busca = %i\n",busca(a,arv)); printf("RD = %i\n",arv->rigth->id); printf("RE = %i\n",arv->left->id); free(arv); system("pause"); return 0; }
/* Insere um novo nó */ void insereNo(PPNo raiz,int chave) { PNo novo, pai; novo = novoNo(chave); /* aloca memória para o novo nó */ pai = busca(*raiz,chave,NULL); /* busca endereço do pai do novo nó */ if(pai) { /* se o pai existe, adiciona novo nó como filho dele */ if(pai->chave == chave) { /* se a chave a ser inserida ja existe, mostra aviso na tela */ gotoxy(1,1); printf("Chave ja existe!\n"); }else { if(chave > pai->chave) pai->dir = novo; else pai->esq = novo; } } balanceamento(raiz); /* recalcula balanceamento da arvore */ }
/*FUNÇÃO AUXILIAR: usada para calcular a relação estatística*/ void calcula(Vizinhos* a,int f_a, Words* aux) { int f_b, f_ab; float moda=0; if(a!=NULL) { calcula(a->prox,f_a,aux); f_ab = a->freq_ab; f_b = busca(aux,a->id)->freq; moda= f_ab/(sqrt(f_a*f_b)); a->moda = moda; } }
// ----------------------------------------- IdentificadoresVisibles::inserta() bool IdentificadoresVisibles::inserta(const std::string &x, bool visibilidad) /** Acepta un nombre de id y su visibilidad, de manera que true es público y false privado. Se implementa con un caracter precediendo a la cadena, 0 privado 1 público */ { bool toret = busca( x ); if ( !toret ) { Identificadores::inserta( ( visibilidad ? '1' : '0' ) + x ); } return toret; }
int main() { int vetor[10] = {8,4,9,6,3,1,2,0,5,7}; int vetor_ord[10] = {0,1,2,3,4,5,6,7,8,9}; printf("%d %d %d %d",busca(N,vetor,4),busca_ord(N,vetor_ord,7),busca_bin(N,vetor_ord,4),busca_bin_rec(N,vetor_ord,6)); // Busca com bsearch da propria biblioteca do C int* p; int val = 7; p = (int*)bsearch(&val,vetor_ord,N,sizeof(int),comp_int); if (p == NULL) printf("\nElemento nao encontrado.\n"); else printf("\nElemento encontrado no indice: %d\n",p-vetor_ord); return 0; }
void busca(int v) { int i, aux, min = low[v] = pre[v] = cont++; empilha(v); for (i = 0; i < nviz[v]; i++) { aux = grafo[v][i]; if (pre[aux] == -1) busca(aux); if (low[aux] < min) min = low[aux]; } if (min < low[v]) { low[v] = min; return; } do { id[i = desempilha()] = numcomp; low[i] = n; } while (i != v); numcomp++; }
int main(){ int* A; int n; int i; scanf("%d", &n); A = malloc(sizeof(int) * n); for(i = 0; i < n; i++){ scanf("%d", &(A[i])); } scanf("%d", &i); printf("Busca binaria: %d\n", busca(A, 0, n - 1, i)); return 0; }
main(){ int vet[TAM]; int var; int chave; int i,j; int vetor_busca[REP]; int vetor_cria[REP]; int vetor_ord[REP]; srand(time(NULL)); for(j=0; j<REP; j++){ for(i=0; i<TAM; i++){ //preenchendo vetor; var = rand()%TAM; cont_cria++; vet[i] = var; } ord_cresc(vet); chave = rand()%TAM; //gera chave randomico; busca(vet, chave); //busca; vetor_busca[j] = cont_busca; vetor_cria[j] = cont_cria; vetor_ord[j] = cont_ord; cont_busca = 0; cont_cria = 0; cont_ord = 0; } printf("N de Op. de INSERCAO:"); for(i=0; i<REP; i++){ printf("\n%d", vetor_cria[i]); } printf("\n\nN de Op. de ORDENACAO:"); for(i=0; i<REP; i++){ printf("\n%d", vetor_ord[i]); } printf("\n\nN de Op. de BUSCA:"); for(i=0; i<REP; i++){ printf("\n%d", vetor_busca[i]); } }
void main() { int n; char *texto; char car; struct info resultado; printf("Ingrese el texto\n\n"); texto = carga(&n); printf("Ingrese un caracter\n\n"); scanf("%c", &car); resultado = busca(texto, n, car); if (resultado.text != NULL){ printf("El texto modificado queda: \n\n%s", resultado.text); printf("La longitud del texto modificado es: \n%i", resultado.longitud); } else printf("El caracter ingresado no estaba en el texto"); }
bool conexo(){ for(int l = 0; l < MAX_ALFA; l++){ if(graus[l] > 0){ visitados[l] = 1; busca(l); break; } } int cont = 0; for (int l = 0; l < MAX_ALFA; l++) { if(visitados[l] == 1) cont++; } if(cont < quant_vertices) return false; return true; }
void busca(const char *diretorio, const char *arquivo, const char *palavra, int *carqs, int *cpastas) { DIR *pasta; /* ponteiro para a pasta */ struct dirent *dir; char vai_para_frente[500], valor[500]; /* para ir a proxima pasta */ strcpy(valor,diretorio); sprintf(valor,"%s\\",valor); pasta = opendir(valor); /* busca nomes em diretório */ if(pasta == NULL) { printf(">>finalizou?!\n"); return; /* ocorreu um erro fatal */ } dir = readdir(pasta); /* ler nome e sair varrendo */ while(dir != NULL){ if(!(pasta->dd_dta.attrib & _A_SUBDIR)) {/* verifica se é subdiretorio */ sprintf(vai_para_frente,"%s\\%s",valor,pasta->dd_dta.name); (*carqs)++; printf("Comparacoringa: %d\n",comparaCoringa(arquivo,pasta->dd_dta.name)); /*if(!strcmp(arquivo,pasta->dd_dta.name)) { printf("Arquivo: %s, encontrado em %s\n",pasta->dd_dta.name,vai_para_frente); /* mostrar o nome do arquivo }*/ } else if(!((!strcmp(pasta->dd_dta.name,".")) || (!strcmp(pasta->dd_dta.name,"..")))) { sprintf(vai_para_frente,"%s\\%s",valor,pasta->dd_dta.name); (*cpastas)++; busca(vai_para_frente,arquivo,palavra,carqs,cpastas); } dir = readdir(pasta); /* ler nome e sair varrendo */ } closedir(pasta); return; }
int main(int argc, char** argv) { Aluno **vetor; int n,i=0,indice; char nome[81]; printf("Tamanho do vetor: "); scanf("%d",&n); vetor = (int **)malloc(n *sizeof(Aluno*)); for (i=0; i<n; i++) vetor[i] = (Aluno*) malloc(sizeof(Aluno)); for (i=0; i<n; i++) { printf("\nAluno %d:\n",i+1); inserir_dados(vetor,i); } ordenar(vetor,n); getchar(); printf("Digite o nome do aluno a ser buscado: "); gets(nome); indice = busca (n,vetor, nome); if (indice == -1) printf("%d Nao encontrado ",indice); else printf("O indice do nome e %d ",indice); return (EXIT_SUCCESS); }