কম্পিউটার

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


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

এটি একটি C++ প্রোগ্রাম যা চতুর্মুখী অনুসন্ধান সহ হ্যাশ টেবিল বাস্তবায়নের জন্য।

অ্যালগরিদম

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

 শুরু করুন ডিক্লেয়ার ফাংশন SearchKey(int k, HashTable *ht) int pos =HashFunc(k, ht->s) intialize collisions =0 while (ht->t[pos].info !=Emp এবং ht->t [pos].e !=k) pos =pos + 2 * ++ সংঘর্ষ -1 যদি (pos>=ht->s) pos =pos - ht->s রিটার্ন posEnd।

সন্নিবেশ করার জন্য:

 শুরু করুন ঘোষণা ফাংশন সন্নিবেশ (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 মান =ht->t[i].e যদি (!value) প্রিন্ট"পজিশন:" এর জন্য
ফাংশন প্রদর্শন (হ্যাশটেবল *ht) ঘোষণা করা শুরু করুন বর্তমান অবস্থান মুদ্রণ করুন" উপাদান:শূন্য" অন্য মুদ্রণ" অবস্থান:" বর্তমান অবস্থান মুদ্রণ করুন" উপাদান:" উপাদানটি প্রিন্ট করুন৷ শেষ৷

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

(int i =0; i Rehash(HashTable *ht) int s =ht->s HashTableEntry *t=ht->t ht=initiateTable(2 * s) ফাংশন ঘোষণা করা শুরু করুন যদি ( t[i].info ==Legi) Insert(t[i].e, ht) free(t) রিটার্ন htEnd. সোর্স কোড:

উদাহরণ কোড

#include #include #define T_S 10 useing namespace std;enum EntryType { Legi, Emp, Del}; struct HashTableEntry { int e; enum এন্ট্রি টাইপ তথ্য; }; struct HashTable { int s; HashTableEntry *t; }; bool isPrime (int n) { if (n ==2 || n ==3) রিটার্ন true; যদি (n ==1 || n % 2 ==0) মিথ্যা ফেরত দেয়; for (int i =3; i * i <=n; i +=2) যদি (n % i ==0) মিথ্যা ফেরত দেয়; রিটার্ন true;}int nextPrime(int n) { if (n <=0) n ==3; যদি (n % 2 ==0) n++; জন্য (; ! isPrime( n); n +=2); রিটার্ন n;}int HashFunc(int k, int s) { return k % s;}HashTable *initiateTable(int s) { HashTable *ht; যদি (s s =nextPrime(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 pos =HashFunc(k, ht->s); int সংঘর্ষ =0; যখন (ht->t[pos].info !=Emp &&ht->t[pos].e !=k) { pos =pos + 2 * ++ সংঘর্ষ -1; যদি (pos>=ht->s) pos =pos - ht->s; } রিটার্ন pos;} void Insert(int k, HashTable *ht) { int pos =SearchKey(k, ht); if (ht->t[pos].info !=Legi) { ht->t[pos].info =Legi; ht->t[pos].e =k; }}হ্যাশটেবল *রিহ্যাশ(হ্যাশটেবল *এইচটি) { int s =ht->s; HashTableEntry *t=ht->t; ht=initiateTable(2*s); for (int i =0; i s; i++) { int value =ht->t[i].e; if (!value) cout<<"পজিশন:"<>c; switch(c) { ক্ষেত্রে 1:cout<<"হ্যাশ টেবিলের আকার লিখুন:"; cin>>s; ht =initiateTable(s); cout<<"হ্যাশ টেবিলের আকার:"< ht->s) { cout<<"টেবিল পূর্ণ হয়, টেবিল রিহ্যাশ করুন"<>v; সন্নিবেশ (v, ht); i++; বিরতি কেস 3:প্রদর্শন (এইচটি); বিরতি কেস 4:ht =Rehash(ht); বিরতি কেস 5:প্রস্থান (1); ডিফল্ট:cout<<"\nসঠিক বিকল্প লিখুন\n"; } } রিটার্ন 0; }

আউটপুট

<প্রে>1.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.আপনার পছন্দের প্রস্থান করুন:1হ্যাশ টেবিলের আকার লিখুন:4টেবিলের আকার হ্যাশ টেবিলের খুব ছোট আকারের:51.এর প্রাথমিক আকার টেবিল 2. টেবিলে উপাদান ঢোকান3. হ্যাশ টেবিলটি প্রদর্শন করুন4. টেবিলটি রিহ্যাশ করুন5. আপনার পছন্দের প্রস্থান করুন:1 হ্যাশ টেবিলের আকার লিখুন:10 হ্যাশ টেবিলের আকার:111. টেবিলের আকার শুরু করুন2. টেবিলে উপাদান ঢোকান3. হ্যাশ T4 প্রদর্শন করুন .টেবিল রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দের উপাদানটি প্রবেশ করুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করান:11.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.আপনার পছন্দের প্রস্থান করুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করুন। টেবিলের আকার2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দের প্রবেশ করুন:2প্রবেশ করার জন্য উপাদান প্রবেশ করান:31.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন .প্রস্থান করুন আপনার পছন্দ লিখুন:2ইনস হতে উপাদান লিখুন erted:41.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.আপনার পছন্দের প্রস্থান করুন:2প্রবেশ করার জন্য উপাদানটি প্রবেশ করুন:51.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হাশ প্রদর্শন করুন টেবিল 4. টেবিল রিহ্যাশ করুন5. প্রস্থান করুন আপনার পছন্দের উপাদানটি প্রবেশ করুন:2 সন্নিবেশ করার উপাদানটি প্রবেশ করান:61. টেবিলের আকার শুরু করুন2. টেবিলে উপাদান ঢোকান3. হ্যাশ টেবিলটি প্রদর্শন করুন4. টেবিলটি রিহ্যাশ করুন5. আপনার পছন্দের প্রস্থান করুন:2 সন্নিবেশ করতে উপাদানটি প্রবেশ করুন:71৷ টেবিলের আকার সূচনা করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দটি প্রবেশ করুন:2প্রবেশ করার জন্য উপাদান প্রবেশ করান:81.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান সন্নিবেশ করুন3.হ্যাশ টেবিলটি প্রদর্শন করুন4.রিহ্যাশ করুন Table5.ExitEnter your choice:2enter এলিমেন্ট ঢোকানো হবে:91.initialize the size of table2.insert element in table3. Display Hash Table4.Rehash The Table5.ExitEnter your choice:2Enter element to ঢোকানো হবে:101.The size of the Initial table2.এ উপাদান সন্নিবেশ করান table3.Display Hash Table4.Rehash The Table5.ExitEnter your choice:2Enter to enter the element:111.initialize the size2.insert element in table3.Display Hash Table4.Rehash The Table5.ExitEnter আপনার পছন্দ সম্পূর্ণ,2T টেবিলটি রিহ্যাশ করুন1.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দটি লিখুন:3পজিশন:1 এলিমেন্ট:11পজিশন:2 এলিমেন্ট:1 পজিশন:3 এলিমেন্ট:2 পজিশন:3 পয়েন্ট 5 উপাদান:4 অবস্থান:6 উপাদান:5 অবস্থান:7 উপাদান:6 অবস্থান:8 উপাদান:7 অবস্থান:9 উপাদান:8 অবস্থান:10 উপাদান:9 অবস্থান:11 উপাদান:101. টেবিলের আকার শুরু করুন2. টি-প্লে করার যোগ্য ডিপ্লেতে উপাদান ঢোকান। .টেবিল 5 রিহ্যাশ করুন।প্রস্থান করুন আপনার পছন্দ:41.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিল 4 প্রদর্শন করুন।টেবিলটি রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দটি লিখুন:3পজিশন:1 এলিমেন্ট:নাল পজিশন:2 এলিমেন্ট:1 এলিমেন্ট:3টি পদ 2 অবস্থান:4 উপাদান:3 অবস্থান:5 উপাদান:4 অবস্থান :6 উপাদান:5 অবস্থান:7 উপাদান:6 অবস্থান:8 উপাদান:7 অবস্থান:9 উপাদান:8 অবস্থান:10 উপাদান:9 অবস্থান:11 উপাদান:10 অবস্থান:12 উপাদান:11 অবস্থান:13 উপাদান:শূন্য অবস্থান:1 পদ সংখ্যা:1 সংখ্যা:1 সংখ্যা :16 উপাদান:NullPosition:17 Element:NullPosition:18 Element:NullPosition:19 Element:NullPosition:20 Element:NullPosition:21 Element:NullPosition:22 Element:NullPosition:23 Element:Null1.Insertable of the element2.Insertable. টেবিল3.হ্যাশ টেবিল ডিসপ্লে করুন4.টেবিল রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দটি লিখুন:2এন্টার করার জন্য উপাদানটি প্রবেশ করান:201.টেবিলের আকার শুরু করুন2.টেবিলে উপাদান ঢোকান3.হ্যাশ টেবিলটি প্রদর্শন করুন4.টেবিলটি রিহ্যাশ করুন5.প্রস্থান করুন আপনার পছন্দটি লিখুন
  1. হিপ সাজানোর জন্য C++ প্রোগ্রাম

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

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

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