Algoritmia - programacion en c++

 
Vista:

programacion en c++

Publicado por nancy v. (1 intervención) el 02/06/2005 18:47:36
Necesito un programa en c++ que contenga almacenamiento de hashing
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación de almacenamiento con tabla hash en C++

Publicado por Alejandro (307 intervenciones) el 05/03/2024 18:00:48
¡Entendido, Nancy! Aquí tienes un ejemplo simple de un programa en C++ que implementa almacenamiento utilizando una tabla de hashing. Este programa usa una tabla hash con encadenamiento para manejar colisiones. La tabla hash almacena pares clave-valor, y se utiliza una función de hash básica para determinar la ubicación de almacenamiento.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <vector>
#include <list>
 
// Estructura para representar un par clave-valor
struct KeyValuePair {
    int key;
    std::string value;
};
 
// Implementación de una tabla hash con encadenamiento para almacenar pares clave-valor
class HashMap {
private:
    static const int TABLE_SIZE = 10;  // Tamaño de la tabla hash
    std::vector<std::list<KeyValuePair>> table;  // Vector de listas para encadenamiento
 
public:
    HashMap() : table(TABLE_SIZE) {}
 
    // Función de hash simple
    int hashFunction(int key) {
        return key % TABLE_SIZE;
    }
 
    // Insertar un par clave-valor en la tabla hash
    void insert(int key, const std::string& value) {
        int index = hashFunction(key);
        table[index].emplace_back(KeyValuePair{key, value});
    }
 
    // Buscar un valor dado una clave en la tabla hash
    std::string search(int key) {
        int index = hashFunction(key);
        for (const auto& pair : table[index]) {
            if (pair.key == key) {
                return pair.value;
            }
        }
        return "Clave no encontrada";
    }
 
    // Mostrar la tabla hash
    void display() {
        for (int i = 0; i < TABLE_SIZE; ++i) {
            std::cout << "[" << i << "]: ";
            for (const auto& pair : table) {
                std::cout << "{" << pair.key << ", " << pair.value << "} ";
            }
            std::cout << std::endl;
        }
    }
};
 
int main() {
    HashMap hashTable;
 
    // Insertar pares clave-valor
    hashTable.insert(1, "Valor1");
    hashTable.insert(11, "Valor2");
    hashTable.insert(21, "Valor3");
    hashTable.insert(2, "Valor4");
 
    // Mostrar la tabla hash
    std::cout << "Tabla hash:\n";
    hashTable.display();
 
    // Buscar valores por clave
    std::cout << "\nBuscar valor para clave 11: " << hashTable.search(11) << std::endl;
    std::cout << "Buscar valor para clave 3: " << hashTable.search(3) << std::endl;
 
    return 0;
}

Este programa crea una tabla hash con encadenamiento y realiza operaciones básicas de inserción y búsqueda. Puedes personalizar este código según tus necesidades específicas. Ten en cuenta que este es un ejemplo simple y que, para casos más complejos o críticos, podrías necesitar implementar técnicas más avanzadas para manejar colisiones, como resolución por exploración cuadrática, resolución por doble [i]hash
, o incluso utilizar estructuras de datos más complejas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar