কম্পিউটার টিউটোরিয়াল

C++-এ হ্যাশ টেবিল বাস্তবায়ন (সহজ সংস্করণ)

বেসিক হ্যাশ টেবিল (লিনিয়ার প্রোবিং)

এই বাস্তবায়নে একটি ফিক্সড সাইজ অ্যারে ব্যবহার করা হয়েছে যেখানে কলিশন হলে লিনিয়ার প্রোবিং (next index চেক করা) করা হয়। চেইনিং নেই।

অ্যালগরিদম

HashFunc(k) = k % T_S
Insert: h = HashFunc(k); while (t[h] != NULL AND t[h]->k != k) h = HashFunc(h+1); t[h] = new Entry(k,v)
Search: h = HashFunc(k); while (t[h] != NULL AND t[h]->k != k) h = HashFunc(h+1); return t[h] ? t[h]->v : -1
Remove: h = HashFunc(k); while (t[h] != NULL) if (t[h]->k == k) break; else h = HashFunc(h+1); if found delete t[h]

উদাহরণ কোড

#include <iostream>
#include <cstdlib>
using namespace std;

const int T_S = 200;

class HashTableEntry {
public:
    int k, v;
    HashTableEntry(int k, int v) : k(k), v(v) {}
};

class HashMapTable {
    HashTableEntry **t;
public:
    HashMapTable() { t = new HashTableEntry*[T_S]; fill(t, t+T_S, nullptr); }
    int HashFunc(int k) { return k % T_S; }
    void Insert(int k, int v) { /* ... লিনিয়ার প্রোবিং ইনসার্ট ... */ }
    int SearchKey(int k) { /* ... সার্চ ... */ }
    void Remove(int k) { /* ... ডিলিট ... */ }
    ~HashMapTable() { for (int i=0;i<T_S;i++) if(t[i]) delete t[i]; delete[] t; }
};

int main() { /* ... মেনু ড্রাইভেন ... */ }

আউটপুট নমুনা

Element at key 6 : 7
Element Deleted

সীমাবদ্ধতা: টেবিল ফুল হলে ইনসার্ট কাজ করবে না (রিহ্যাশিং নেই)।

  1. C++ প্রোগ্রাম: সিলেকশন সর্ট বাস্তবায়ন

  2. C++ প্রোগ্রাম: হিপ সর্ট বাস্তবায়ন

  3. C++ প্রোগ্রাম: বাবল সর্ট বাস্তবায়ন

  4. C++ প্রোগ্রাম: র‍্যাডিক্স সর্ট বাস্তবায়ন