hashing
Publicado por Serbulo (1 intervención) el 15/05/2007 14:46:19
QUISIERA OBTENER TODA LA AYUDA POSIBLE EN GASHIN EN VARIOS METODOS, COLISIONES Y SINONIMOS, ES URGENTE, POR FAVOR AYUDENME, EL CODIGO ES EN C++
Valora esta pregunta


0
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
class HashTable {
private:
unordered_map<int, string> table;
public:
// Función de hash simple para enteros
int simpleHash(int key) {
return key % 10; // Modificación del tamaño de la tabla según tus necesidades
}
// Función de hash para cadenas (ejemplo)
int hashString(const string& key) {
int hashValue = 0;
for (char ch : key) {
hashValue += ch;
}
return hashValue % 10; // Modificación del tamaño de la tabla según tus necesidades
}
// Insertar elemento en la tabla
void insert(int key, const string& value) {
int index = simpleHash(key); // Cambiar a hashString para claves de cadena
table[index] = value;
}
// Buscar elemento en la tabla
string search(int key) {
int index = simpleHash(key); // Cambiar a hashString para claves de cadena
if (table.find(index) != table.end()) {
return table[index];
} else {
return "No encontrado";
}
}
};
int main() {
HashTable myHashTable;
// Ejemplo de uso
myHashTable.insert(42, "Ejemplo1");
myHashTable.insert(23, "Ejemplo2");
myHashTable.insert(55, "Ejemplo3");
// Buscar elementos
cout << "Resultado de búsqueda para clave 23: " << myHashTable.search(23) << endl;
cout << "Resultado de búsqueda para clave 37: " << myHashTable.search(37) << endl;
return 0;
}
// Implementación de hash con manejo de colisiones mediante listas enlazadas
#include <iostream>
#include <list>
#include <string>
using namespace std;
class HashTable {
private:
static const int tableSize = 10;
list<pair<int, string>> table[tableSize];
public:
// Función de hash simple para enteros
int simpleHash(int key) {
return key % tableSize;
}
// Insertar elemento en la tabla
void insert(int key, const string& value) {
int index = simpleHash(key);
table[index].push_back(make_pair(key, value));
}
// Buscar elemento en la tabla
string search(int key) {
int index = simpleHash(key);
for (const auto& pair : table[index]) {
if (pair.first == key) {
return pair.second;
}
}
return "No encontrado";
}
};
int main() {
HashTable myHashTable;
// Ejemplo de uso
myHashTable.insert(42, "Ejemplo1");
myHashTable.insert(23, "Ejemplo2");
myHashTable.insert(55, "Ejemplo3");
// Buscar elementos
cout << "Resultado de búsqueda para clave 23: " << myHashTable.search(23) << endl;
cout << "Resultado de búsqueda para clave 37: " << myHashTable.search(37) << endl;
return 0;
}
#include <iostream>
#include <string>
using namespace std;
class HashTable {
private:
static const int tableSize = 10;
pair<int, string> table[tableSize];
public:
// Función de hash simple para enteros
int simpleHash(int key) {
return key % tableSize;
}
// Insertar elemento en la tabla con manejo de colisiones
void insert(int key, const string& value) {
int index = simpleHash(key);
while (table[index].first != -1) {
// Sonda lineal en caso de colisión
index = (index + 1) % tableSize;
}
table[index] = make_pair(key, value);
}
// Buscar elemento en la tabla
string search(int key) {
int index = simpleHash(key);
int originalIndex = index;
while (table[index].first != -1) {
if (table[index].first == key) {
return table[index].second;
}
// Sonda lineal en caso de colisión
index = (index + 1) % tableSize;
if (index == originalIndex) {
break; // Evitar bucle infinito
}
}
return "No encontrado";
}
};
int main() {
HashTable myHashTable;
// Ejemplo de uso
myHashTable.insert(42, "Ejemplo1");
myHashTable.insert(23, "Ejemplo2");
myHashTable.insert(55, "Ejemplo3");
// Buscar elementos
cout << "Resultado de búsqueda para clave 23: " << myHashTable.search(23) << endl;
cout << "Resultado de búsqueda para clave 37: " << myHashTable.search(37) << endl;
return 0;
}