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
0
#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;
}