Facebook
From Ivory Lion, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 146
  1. //============================================================================
  2. // Name        : hashtab.cpp
  3. // Author      : me
  4. // Version     :
  5. // Copyright   : Your copyright notice
  6. // Description : Hello World in C++, Ansi-style
  7. //============================================================================
  8.  
  9. #include <iostream>
  10. #include <string>
  11. #include <cstring>
  12.  
  13. using namespace std;
  14.  
  15.  
  16.  
  17. class HashTable1{
  18.         private:
  19.                 string* t;
  20.                 int capacity;
  21.                 int ht_size;
  22.         public:
  23.                 HashTable1(int c);      //konstruktor tworzący pustą tablicę o pojemności c
  24.                 int hashF(string s);    //funkcja haszująca dla ciągu s
  25.                 bool insert(string s);  //wstawienie ciągu s, zwraca true jeśli wstawienie nie wywołało kolizji, fals jeśli kolozja nastąpiła
  26.                 int search(string s);   //wyszukanie ciągu s, zwraca indeks lub -1 jeśli
  27.                 friend ostream& operator<<(ostream& out, HashTable1& ht);
  28. };
  29.         HashTable1::HashTable1(int c)
  30.         {
  31.                 capacity=c;
  32.                 t = new string[c];
  33.                 for(int i = 0; i < capacity; i++)
  34.                 {
  35.                         t[i]="0";
  36.                 }
  37.                 ht_size = 0;
  38.         }
  39.  
  40. int HashTable1::hashF(string s){
  41.  
  42.  
  43.  
  44.  
  45.            int i, sum;
  46.            for (sum=0, i=0; i < s.length(); i++)
  47.              sum += s[i];
  48.            return sum % capacity;
  49.          }
  50.  
  51. bool HashTable1::insert(string s){
  52.         int indeks;
  53.         indeks = hashF(s);
  54.         if(t[indeks]=="0")
  55.         {
  56.                 t[indeks]=s;
  57.                 ht_size++;
  58.                 return true;
  59.         }
  60.         else{
  61.         for(int i = indeks+1; i<capacity; i++)
  62.                 {
  63.                         if(t[i]=="0")
  64.                         {
  65.                         t[i]=s;
  66.                         ht_size++;
  67.                         return false;
  68.                         }
  69.                 }
  70.                 for( int i =0; i< indeks; i++)
  71.                                 {
  72.                          if(t[i]=="0")
  73.                          {
  74.                                                 t[i]=s;
  75.                                                 ht_size++;
  76.                                                 return false;
  77.                         }
  78.  
  79.                                 }
  80.  
  81.         return false;
  82.         }
  83.  
  84.  
  85.  
  86. }
  87.  
  88. ostream& operator<<(ostream& out, HashTable1& ht){
  89.         for(int i = 0; i < ht.capacity;i++)
  90.         {
  91.  
  92.                 out<<ht.t[i]<<" , ";
  93.  
  94.         }
  95.         return out;
  96. }
  97.  
  98.  
  99.  
  100.  
  101. int main() {
  102.         HashTable1 obiektI(15);
  103.  
  104.  
  105.  
  106.         obiektI.insert("Ela");
  107.         obiektI.insert("Ola");
  108.         obiektI.insert("Ala");
  109.         cout<<obiektI;
  110.  
  111.         return 0;
  112. }
  113.