কম্পিউটার

ডাবল হ্যাশিং সহ হ্যাশ টেবিল বাস্তবায়নের জন্য C++ প্রোগ্রাম


একটি হ্যাশ টেবিল হল একটি ডেটা স্ট্রাকচার যা কী-মান জোড়া সংরক্ষণ করতে ব্যবহৃত হয়। হ্যাশ ফাংশন হ্যাশ টেবিল দ্বারা একটি অ্যারেতে একটি সূচক গণনা করতে ব্যবহৃত হয় যেখানে একটি উপাদান সন্নিবেশ করা হবে বা অনুসন্ধান করা হবে৷

ওপেন অ্যাড্রেসড হ্যাশ টেবিলে ডাবল হ্যাশিং হল একটি সংঘর্ষের সমাধান করার কৌশল। ডাবল হ্যাশিং একটি সংঘর্ষ ঘটলে কী করার জন্য দ্বিতীয় হ্যাশ ফাংশন ব্যবহার করার ধারণা ব্যবহার করে।

এটি একটি C++ প্রোগ্রাম যা ডাবল হ্যাশিং সহ হ্যাশ টেবিল চেইনিং বাস্তবায়নের জন্য।

অ্যালগরিদম

একটি কী অনুসন্ধানের জন্য:

 শুরু করুন সার্চকি (int k, HashTable *ht) int hashVal=HashFunc1(k, ht->s) int stepSize=HashFunc2(k, ht->s) যখন (ht->t[hashVal]. তথ্য !=Emp এবং ht->t[hashVal].e !=k) hashVal =hashVal + stepSize hashVal =hashVal % ht->s ফেরত hashValEnd

ঢোকানোর জন্য:

শুরু করুন। ঘোষণা ফাংশন সন্নিবেশ (int k, HashTable *ht) int pos =SearchKey(k, ht) if (ht->t[pos].info !=Legi ) ht->t[pos].info =Legi ht->t [pos].e =kEnd

প্রদর্শনের জন্য:

(int i =0; i s; i++) int v=ht->t[i].e; যদি (!v) প্রিন্ট "পজিশন:" পয়েন্টারের অবস্থান প্রিন্ট করুন প্রিন্ট করুন " এলিমেন্ট:নাল" অন্যথায় প্রিন্ট করুন "পজিশন:" পয়েন্টারের অবস্থান মুদ্রণ করুন প্রিন্ট করুন " এলিমেন্ট:" এলিমেন্টটি প্রিন্ট করুন।

রিহ্যাশ ফাংশনের জন্য:

(int i =0; i



উদাহরণ কোড

#include #include #define T_S 5 useing namespace std;enum EntryType {Legi, Emp};struct HashTableEntry { int e; enum EntryType info;};struct HashTable { int s; HashTableEntry *t;};int HashFunc1(int k, int s) { return k % s;}int HashFunc2(int k, int s) { রিটার্ন (k * s - 1) % s;} HashTable * initiateTable(int s) ) { হ্যাশটেবল *এইচটি; যদি (s s =s; ht->t =নতুন HashTableEntry[ht->s]; যদি (ht->t==NULL) { cout<<"টেবিলের আকার খুব ছোট"<s; i++) { ht->t[i].info =Emp; ht->t[i].e=NULL; } ফিরুন ht;}int SearchKey(int k, HashTable *ht) { int hashVal=HashFunc1(k, ht->s); int stepSize=HashFunc2(k, ht->s); যখন (ht->t[hashVal].info !=Emp &&ht->t[hashVal].e !=k) { hashVal =hashVal + stepSize; hashVal =hashVal % ht->s; } রিটার্ন হ্যাশভাল;} void Insert(int k, HashTable *ht) { int pos =SearchKey(k, ht); যদি (ht->t[pos].info !=Legi ) { ht->t[pos].info =Legi; ht->t[pos].e =k; }} অকার্যকর প্রদর্শন (হ্যাশটেবল *এইচটি) { (int i =0; i s; i++) { int v=ht->t[i].e; if (!v) cout<<"পজিশন:"<s; HashTableEntry *t=ht->t; ht =initiateTable(2*s); for (int i =0; i >c; switch(c) { ক্ষেত্রে 1:cout<<"হ্যাশ টেবিলের আকার লিখুন:"; cin>>s; ht =initiateTable(s); বিরতি কেস 2:যদি (i> ht->s) { cout<<"টেবিল পূর্ণ হয়, টেবিল রিহ্যাশ করুন"<>v; সন্নিবেশ (v, ht); i++; বিরতি কেস 3:প্রদর্শন (এইচটি); বিরতি কেস 4:ht =Rehash(ht); বিরতি কেস 5:প্রস্থান (1); ডিফল্ট:cout<<"\nসঠিক বিকল্প লিখুন\n"; } } রিটার্ন 0; }



আউটপুট

1.সারণীর আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিলটি প্রদর্শন করুন।রিহ্যাশ হ্যাশ টেবিল5.আপনার পছন্দের প্রস্থান করুন:1হ্যাশ টেবিলের আকার লিখুন:4টেবিলের আকার খুবই ছোটআপনার পছন্দটি লিখুন:1হ্যাশ টেবিলের আকার লিখুন :101.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল 5.আপনার পছন্দের প্রস্থান করুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করুন:11.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হাশ 4টি প্রদর্শন করুন .রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করুন:31.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি প্রবেশ করুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করুন:41প্রবেশ করা হবে। টেবিলের আকার2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দের প্রবেশ করুন:2প্রবেশ করার জন্য উপাদান প্রবেশ করান:51.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিলটি প্রদর্শন করুন4.হ্যাশ টেবিলটি রিহ্যাশ করুন5. প্রস্থান করুন আপনার পছন্দ লিখুন:2 এন্টার ele ment সন্নিবেশ করা হবে:61.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করান:71.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান33 ডিসপ্লে হ্যাশ টেবিল4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:2এন্টার এলিমেন্ট ঢোকানো হবে:81.টেবিলের আকার শুরু করুন2.টেবিলে এলিমেন্ট ঢোকান3.হ্যাশ টেবিল ডিসপ্লে করুন.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দের সঠিক বিকল্পটি প্রবেশ করান:9ইন্টার করুন। টেবিলের আকার2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দের প্রবেশ করুন:2প্রবেশ করার জন্য উপাদান প্রবেশ করান:91.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.হ্যাশ টেবিল 5 রিহ্যাশ করুন .প্রস্থান করুন আপনার পছন্দের প্রবেশ করুন:2প্রবেশ করার উপাদানটি প্রবেশ করান:101.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি প্রবেশ করুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করান:111টির আকার 111. উপাদান ঢোকান টেবিলে 3. হ্যাশ টেবিল প্রদর্শন করুন4. হ্যাশ হ্যাশ টেবিল5. প্রস্থান করুন আপনার পছন্দটি লিখুন:2 টেবিলটি পূর্ণ, টেবিলটি রিহ্যাশ করুন1. টেবিলের আকার শুরু করুন2. টেবিলের মধ্যে উপাদান প্রবেশ করান3. হ্যাশ টেবিলটি প্রদর্শন করুন4. হ্যাশ হ্যাশ টেবিল5. প্রস্থান করুনএন্টার আপনার পছন্দটি সঠিক করুন:1 বিকল্প1.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন।হ্যাশ টেবিল 5.আপনার পছন্দের প্রস্থান করুন:2টেবিল পূর্ণ, টেবিলটি রিহ্যাশ করুন1.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিল4 প্রদর্শন করুন। রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:2টেবিলটি পূর্ণ, টেবিলটি রিহ্যাশ করুন1.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:3পজিশন:1 উপাদান:10টি পয়েন্ট 1পজিশন:3 উপাদান:11 অবস্থান:4 উপাদান:3 অবস্থান:5 উপাদান:4 অবস্থান:6 উপাদান:5 অবস্থান:7 উপাদান:6 অবস্থান:8 উপাদান:7 অবস্থান:9 উপাদান:8 অবস্থান:10 উপাদান:91। টেবিলে 3. হ্যাশ ট্যাব প্রদর্শন করুন le4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:41.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ হ্যাশ টেবিল5.প্রস্থান করুন আপনার পছন্দটি লিখুন:3পজিশন:1 উপাদান:নাল পজিশন:2টি উপাদান:3Position :শূন্যপদ:4 উপাদান:3 অবস্থান:5 উপাদান:4 অবস্থান:6 উপাদান:5 অবস্থান:7 উপাদান:6 অবস্থান:8 উপাদান:7 অবস্থান:9 উপাদান:8 অবস্থান:10 উপাদান:9 অবস্থান:11 উপাদান:101211 পদ::NullPosition:14 Element:NullPosition:15 Element:NullPosition:16 Element:NullPosition:17 Element:NullPosition:18 Element:NullPosition:19 Element:NullPosition:20 Element:Null1. initialize t2 element insertable insertable of t3. ডিসপ্লে হ্যাশ টেবিল 4. রিহ্যাশ হ্যাশ টেবিল5. প্রস্থান করুন আপনার পছন্দটি লিখুন:2 এন্টার করা উপাদানটি প্রবেশ করান:201. টেবিলের আকার শুরু করুন2. টেবিলে উপাদান ঢোকান3. হ্যাশ টেবিল 4 প্রদর্শন করুন. রিহ্যাশ হ্যাশ টেবিল5. প্রস্থান করুন আপনার পছন্দটি লিখুন:3 পদ:পদ 2 :2 উপাদান:1 অবস্থান:3 উপাদান ment:NullPosition:4 Element:3 Position:5 Element:4 Position:6 Element:5 Position:7 Element:6 Position:8 Element:7 Position:9 Element:8 Position:10 Element:9 Position:11 Element:1013 Element:1013 Position এলিমেন্ট:NullPosition:14 Element:NullPosition:15 Element:NullPosition:16 Element:NullPosition:17 Element:NullPosition:18 Element:NullPosition:19 Element:NullPosition:20 Element:Null1. initializeable in the element2 of the 3 সাইজ। হ্যাশ টেবিল ডিসপ্লে 4. রিহ্যাশ হ্যাশ টেবিল5. প্রস্থান করুন আপনার পছন্দটি লিখুন:5



  1. হিপ সাজানোর জন্য C++ প্রোগ্রাম

  2. বুদবুদ সাজানোর জন্য C++ প্রোগ্রাম

  3. রেডিক্স সাজানোর জন্য C++ প্রোগ্রাম

  4. প্রদত্ত জটিলতা সীমাবদ্ধতার সাথে দ্রুত সাজানোর জন্য C++ প্রোগ্রাম