Implementando a tabela de hash em C ++

Implementando a tabela de hash em C ++
Se você já trabalhou em um ambiente python, deve saber sobre o uso do “dicionário” do objeto que contém um par de valores-chave nele. Assim como os dicionários, C ++ criou o conceito de par de valores-chave. Este par será armazenado na tabela de hash da estrutura de dados de C++. A tabela de hash da estrutura de dados usará a função de hash para calcular o índice de matriz para inserir valores na tabela usando índices e pesquisá -los também.

Neste guia, discutiremos o uso de métodos para criar, adicionar, excluir, valores de pesquisa das tabelas de hash usando algumas de suas funções.

Vamos começar com o login do Linux. Tente fazer um arquivo C ++ usando a instrução "Touch" no shell e use qualquer editor interno disponível do seu sistema Linux para abri-lo (i.e. GNU nano).

Exemplo: tabela de hash

Você verá que o arquivo vazio está aberto na tela do terminal Linux. Nesse arquivo, temos que incluir algumas das principais e necessárias bibliotecas de C ++ para tornar nosso código executável ao usar conceitos diferentes.

Então, adicionamos o "iostream" para uso de entrada e saída no script através dos objetos CIN e Cout. A biblioteca da string foi usada para usar valores de string em nosso código. A biblioteca “cstdlib” e “cstdo” foram usadas para obter os valores de personagem e entrada padrão para o uso de tabelas de hash. Antes de usar qualquer função ou classe, declaramos um "espaço para nome" padrão no código e depois disso, inicializamos uma variável inteira constante "T_S" para o tamanho da tabela de hash para obter 200 registros.

A classe HashtableEntry está aqui para inicializar o valor do par de valores-chave de uma tabela, obtendo o valor como uma entrada do usuário. A função construtora hashtableEntry () será utilizada para isso.

Aí vem a outra classe "Hashmaptable" declarando um objeto de ponteiro privado "TB" para a classe "hashtableEntry".

A criação de um objeto "hash" na função principal () para a classe Hashmaptable, a primeira função a ser executada, é a função de construção "hashmaptable". Este construtor é usado para construir a tabela de tamanho do tipo de par de valores-chave “t_s” i.e. 200.

Para construir uma tabela de valor-chave do tamanho 200, estamos utilizando o loop "for" até o tamanho 200 inicializando cada índice para nulo.

Esta função calculará o módulo de chave “a” e tamanho da tabela “t_s” e retornará.

Se o usuário escolher a opção '1', a função "entrada" será executada ao obter o par de valores-chave do usuário. A função "hashfunc" será chamada passando o valor "A". O módulo retornado será salvo na variável "H". Este "h" será usado como um número de índice para a tabela "TB" dentro do while loop.

Se o valor específico do índice de uma tabela não for nulo e o índice de tabela "h" para a chave "a" não for igual a chave "a", será chamado de hashfunc () novamente para calcular o módulo e salvar o resultado para " h ". Se o índice específico da tabela não for nulo, excluiremos esse valor específico da tabela e geraremos uma nova entrada de valor-chave no índice específico.

A função SearchKey () aceitará a chave, verificará o módulo e procurará o valor no índice da tabela. Se o valor no índice "h" for nulo, ele retornará -1 devolvido o valor "B" de um índice específico "H" da tabela.

A função delete () aceitará a chave e o valor específico para esta chave. Exclua o valor se o índice especificado não estiver vazio e exiba a mensagem de sucesso usando a instrução Cout.

O destruidor é usado para excluir toda a tabela de hash.

Depois de iniciar o método Main (), criamos um objeto "hash" para a classe Hashmaptable. Devido à formação de objetos, o construtor será chamado e uma tabela será criada. Em seguida, inicializamos 2 variáveis ​​inteiras A, B e C. Usamos a representação do menu para um usuário criar uma tabela, inserir, excluir e exibir registros, escolhendo alguma opção.

Então, o loop do tempo () continuará sendo executado até que o usuário saia. Temos usado declarações de saída padrão cout para criar um menu i.e. Escolha 1 para inserir um valor, 2 para pesquisar, 3 para excluir e 4 para sair. Um usuário foi solicitado a escolher uma opção e uma instrução CIN é usada para obter entrada (1,2,3,4) em uma variável 'C' do usuário.

Agora, aqui vem a instrução Switch usando a variável "C" como um valor de opção para agir de acordo.

Agora, se o usuário pressionou 1 como uma opção, o caso 1 de um interruptor será executado. Ele executará algumas declarações cout e solicitará que você insira a chave primeiro e depois o valor do par para uma chave específica usando a instrução CIN e salvando a entrada de valor-chave para “A” e “B” variáveis. A função "entrada" será chamada usando um objeto "hash" e a variável "a", "b" será transmitida a ele.

Se um usuário escolher 2, o caso 2 será executado e pedirá a um usuário que insira uma chave ou pesquise. O "CIN" receberá uma chave do usuário para colocar na variável "a". A instrução "se" chamará o método "SearchKey ()" usando o objeto "hash".

Se não encontrarmos nenhuma chave da tabela I.e. "-1", exibiremos uma mensagem "Nenhum valor encontrado na chave A". Caso contrário, exibiremos a chave e seu valor específico retornado pela função "SearchKey".

Ao escolher a opção 3, o usuário será solicitado a inserir a chave para excluí -la da tabela. A função "delete ()" será executada.

Se o usuário escolher a opção 4, o programa sairá.

Agora, é hora de compilar este código com o compilador especial "G ++" do Ubuntu para arquivos C ++.

A compilação foi bem -sucedida e nós a executamos com o “./a.out ”consulta. O menu de 4 opções foi exibido e o usuário foi solicitado a inserir sua escolha (1,2,3,4). O usuário adicionou 1 para inserir valor na tabela de hash. O usuário inseriu a chave e seu valor para a tabela. Este registro foi inserido com sucesso e o menu foi exibido novamente.

O usuário inseriu "2" como uma opção para procurar o valor de chave específico. Em troca, obtivemos o valor "14" para a chave 1 na tabela de hash. O menu de opções será exibido novamente.

Desta vez, o usuário escolhe a opção 3 para excluir o valor já mantido da tabela de hash usando sua chave. Então, o usuário foi convidado a entrar na chave para a qual você deseja excluir o valor (i.e. 1). O sistema exibirá a mensagem de que o elemento específico foi removido.

Novamente, o menu foi exibido. O usuário escolheu a opção 4 para sair do programa.

Conclusão

Este artigo é sobre a criação de uma tabela de hash usando o código C ++ no Ubuntu 20.04 Sistema. Junto com isso, também descobrimos os métodos para inserir o par de valores-chave na tabela de hash, exibir o par de valores de chave específico, excluir um par específico de valor-chave e sair do código. Usamos o menu para simplificar e as instruções de switch para escolher opções.