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 enterosint 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 tablavoid insert(int key, const string& value) {
int index = simpleHash(key); // Cambiar a hashString para claves de cadena
table[index] = value;
} // Buscar elemento en la tablastring 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 usomyHashTable.insert(42, "Ejemplo1");
myHashTable.insert(23, "Ejemplo2");
myHashTable.insert(55, "Ejemplo3");
// Buscar elementoscout << "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 enterosint simpleHash(int key) {
return key % tableSize; } // Insertar elemento en la tablavoid insert(int key, const string& value) {
int index = simpleHash(key);
table[index].push_back(make_pair(key, value));
} // Buscar elemento en la tablastring 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 usomyHashTable.insert(42, "Ejemplo1");
myHashTable.insert(23, "Ejemplo2");
myHashTable.insert(55, "Ejemplo3");
// Buscar elementoscout << "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 enterosint simpleHash(int key) {
return key % tableSize; } // Insertar elemento en la tabla con manejo de colisionesvoid insert(int key, const string& value) {
int index = simpleHash(key);
while (table[index].first != -1) {
// Sonda lineal en caso de colisiónindex = (index + 1) % tableSize;
}table[index] = make_pair(key, value);
} // Buscar elemento en la tablastring 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ónindex = (index + 1) % tableSize;
if (index == originalIndex) {
break; // Evitar bucle infinito } } return "No encontrado"; }};int main() {
HashTable myHashTable;
// Ejemplo de usomyHashTable.insert(42, "Ejemplo1");
myHashTable.insert(23, "Ejemplo2");
myHashTable.insert(55, "Ejemplo3");
// Buscar elementoscout << "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;
}
