Advertisement
davidcastrosalinas

20201218 Tabla Hash Template (128 posiciones)

Dec 18th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.28 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <class TypeValue>
  6. class HashEntry {
  7. public:
  8.       HashEntry(int key, TypeValue value) {
  9.             this->key = key;
  10.             this->value = value;
  11.       }
  12.  
  13.       int getKey() {
  14.             return key;
  15.       }
  16.  
  17.       TypeValue getValue() {
  18.             return value;
  19.       }
  20. private:
  21.       int key;
  22.       TypeValue value;
  23. };
  24.  
  25. const int TABLE_SIZE = 128;
  26.  
  27.  
  28. template <class TypeValue>
  29. class HashMap {
  30. private:
  31.       HashEntry<TypeValue> **table;
  32. public:
  33.       HashMap() {
  34.             table = new HashEntry<TypeValue> *[TABLE_SIZE];
  35.             for (int i = 0; i < TABLE_SIZE; i++)
  36.                   table[i] = NULL;
  37.       }
  38.  
  39.       TypeValue get(int key) {
  40.             int hash = (key % TABLE_SIZE);
  41.             while (table[hash] != NULL && table[hash]->getKey() != key)
  42.                   hash = (hash + 1) % TABLE_SIZE;
  43.             if (table[hash] == NULL)
  44.                   return TypeValue();
  45.             else
  46.                   return table[hash]->getValue();
  47.       }
  48.  
  49.       void put(int key, TypeValue value) {
  50.             int hash = (key % TABLE_SIZE);
  51.             while (table[hash] != NULL && table[hash]->getKey() != key)
  52.                   hash = (hash + 1) % TABLE_SIZE;
  53.             if (table[hash] != NULL)
  54.                   delete table[hash];
  55.             table[hash] = new HashEntry<TypeValue>(key, value);
  56.       }
  57.  
  58.       ~HashMap() {
  59.             for (int i = 0; i < TABLE_SIZE; i++)
  60.                   if (table[i] != NULL)
  61.                         delete table[i];
  62.             delete[] table;
  63.       }
  64. };
  65.  
  66. using namespace std;
  67.  
  68. int main()
  69. {
  70.     //considerando un TABLE_SIZE = 128
  71.     HashMap<string> h;
  72.     h.put(4,"Jorge");
  73.     h.put(3,"Samuel");
  74.     h.put(6,"Tomas");
  75.     h.put(1,"Lucas");
  76.     h.put(1000,"Benjamin");
  77.     h.put(1124,"Felipe");
  78.     h.put(13451,"Cristobal");
  79.     h.put(21,"David");
  80.     cout << endl <<"key(4):\t\tvalue="<<h.get(4);
  81.     cout << endl <<"key(6):\t\tvalue="<<h.get(6);
  82.     cout << endl <<"key(1):\t\tvalue="<<h.get(1);
  83.     cout << endl <<"key(1000):\tvalue="<<h.get(1000);
  84.     cout << endl <<"key(1124):\tvalue="<<h.get(1124);
  85.     cout << endl <<"key(13451):\tvalue="<<h.get(13451);
  86.     cout << endl <<"key(21):\tvalue="<<h.get(21);
  87.     return 0;
  88. }
  89.  
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement