Ir ao conteúdo
  • Cadastre-se

Diogo Moreira Franco

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Tudo que Diogo Moreira Franco postou

  1. #include <iostream> #include <stdio.h> #include <stdlib.h> #define TAM_MAX 7 struct reg { int item; int ocupado; }; typedef struct reg HASH; int funcaohash(int); void inicializa(HASH []); void insere(HASH [], int); int busca(HASH [], int); void apaga(HASH [], int); void imprime(HASH []); int cheia(HASH []); int hash1(int chave) { return abs(chave) % TAM_MAX; } int hash2(int chave) { return (abs(chave)*2) % TAM_MAX; /* o valor da função */ } void inicializa(HASH tabHash[]) { int i; for(i=0; i<TAM_MAX; i++) tabHash[i].ocupado = 0; // falso } int insere(HASH tabHash[], int chave) { int i = hash1(chave); int k = hash2(chave); int cont = 0; /* procura a próxima posição livre */ while (tabHash[i] != -1) { if (tabHash[i] == chave) return –1; /* valor já existente na tabela */ if (++cont == TAM_MAX) return –2; /* tabela cheia */ i = (i + k) % TAM_MAX; /* tabela circular */ } /* achamos uma posição livre */ tabHash[i] = chave; return i; } // Retorna -1 se não encontrou ou a posição caso encontre o item int busca(HASH tabHash[], int chave) { // Recuperando um elemento int i = hash1(chave); int k = hash2(chave); int cont = 0 ; /* procura x a partir da posição i */ while (tabHash[i] != chave) { if (tabHash[i] == -1) return –1; /* não achou x, pois há uma vazia */ if (++cont == TAM_MAX) return –2; /* a tabela está cheia */ i = (i + k) % TAM_MAX; /* tabela circular */ } /* encontrou */ return i; } void apaga(HASH tabHash[], int chave) { int pos = busca(tabHash,chave); if (pos!=-1) { tabHash[pos].ocupado=0; printf("-> Dados HASH[%d] apagados",pos); } else printf("Item não encontrado"); } void imprime(HASH tabHash[]) { int i; for (i=0; i<TAM_MAX; i++) if( tabHash[i].ocupado == 1) printf("\nCampo [%d] = %.2f",i,tabHash[i].item); } int cheia(HASH tabHash[]) { int i, qtde=0; for (i=0; i<TAM_MAX; i++) if( tabHash[i].ocupado == 1) qtde++; if (qtde == TAM_MAX) return 1; else return 0; } main() { int i, pos; HASH tab[TAM_MAX]; // criando tabela na memoria float item; inicializa(tab); // Inserindo elementos (USUARIO) printf("\n*************************************************************\n"); printf("Tabela HASH com tratamento de colisoes linear (7 itens reais)"); printf("\n*************************************************************"); int c; while (1) { printf("\nDigite uma opcao\n"); printf("[1]Inserir elemento na tabela\n[2]Procurar elemento na tabela\n[3]Deletar elemento na tabela\n[4]Imprimir\n[5]Sair\n\n"); scanf("%d",c); switch(c) { case 1: printf("Informe o elemento a ser inserido: "); scanf("%f",&item); insere(tab,item); break; case 2: printf("\nForneca o item: "); scanf("%f",&item); pos=busca(tab,item); if (pos!=-1) printf("Item %.2f encontrado na posicao %d", tab[pos].item,pos); else printf("Item não encontrado"); break; case 3: printf("\n\Informe o item a ser deletado "); scanf("%f",&item); apaga(tab,item); break; case 4: printf("\n\nImprimindo conteudo"); imprime(tab); break; case 5: exit(1); default: printf("\nEsta opcao não existe. \n"); } } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!