Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

चेनिंग के साथ हैशिंग के लिए C++ प्रोग्राम

हैशिंग वह विधि है जिसके द्वारा हम किसी भी लम्बाई के डेटा तत्व को एक निश्चित आकार की कुंजी में मैप कर सकते हैं। हैशिंग की-वैल्यू पेयर के रूप में काम करता है।

हैशिंग फंक्शन वह फंक्शन है जो हैश मैप में मैपिंग करता है। हैश फ़ंक्शन में इनपुट के रूप में दिए गए डेटा तत्वों को समान हैश कुंजी मिल सकती है। इस मामले में, तत्व ओवरलैप हो सकते हैं। समान हैश कुंजी वाले तत्वों के ओवरलैपिंग से बचने के लिए चेनिंग की अवधारणा पेश की गई थी।

हैशमैप बनाना

हैशमैप बनाने के लिए हमें हैशिंग फ़ंक्शन की आवश्यकता होती है जो डेटा तत्व के सूचकांक मूल्य को परिभाषित करेगा।

हमारे पास एक हैश टेबल है, जिसमें n बकेट हैं। हैश तालिका . में नोड डालने के लिए , हमें एक हैश फ़ंक्शन दिया जाता है

हैशइंडेक्स =कुंजी% noOfBuckets

अब, हम इस हैश फ़ंक्शन का उपयोग करेंगे और प्रत्येक सम्मिलित मान के हैशइंडेक्स की गणना हैशमैप में करेंगे ।

  • तत्व डालें और दिए गए कुंजी मान के हैशइंडेक्स की गणना करें और फिर सूची के अंत में नया नोड डालें।

  • एक नोड को हटाने के लिए, हम हैश इंडेक्स की गणना करेंगे और हैश इंडेक्स के अनुरूप बाल्टी में हम बाल्टी में तत्व की खोज करेंगे और उसे हटा देंगे।

उदाहरण

#include<iostream>
#include <list>
using namespace std;
class Hash{
   int BUCKET;
   list < int >*table;
   public:
   Hash (int V);
   void insertItem (int x);
   void deleteItem (int key);
   int hashFunction (int x){
      return (x % BUCKET);
   }
   void displayHash ();
};
Hash::Hash (int b){
   this->BUCKET = b;
   table = new list < int >[BUCKET];
}
void Hash::insertItem (int key){
   int index = hashFunction (key);
   table[index].push_back (key);
}
void Hash::deleteItem (int key){
   int index = hashFunction (key);
   list < int >::iterator i;
   for (i = table[index].begin (); i != table[index].end (); i++){
   if (*i == key)
      break;
   }
   if (i != table[index].end ())
      table[index].erase (i);
}
void Hash::displayHash (){
   for (int i = 0; i < BUCKET; i++){
      cout << i;
      for (auto x:table[i])
      cout << " --> " << x;
      cout << endl;
   }
}
 int main (){
   int a[] = { 5, 12, 67, 9, 16 };
   int n = 5;
   Hash h (7);
   for (int i = 0; i < n; i++)
   h.insertItem (a[i]);
   h.deleteItem (12);
   h.displayHash ();
   return 0;
}

आउटपुट

0
1
2 --> 9 --> 16
3
4 --> 67
5 --> 5
6

  1. सी ++ प्रोग्राम में एक पेड़ में पूर्वजों-वंशज संबंधों के लिए प्रश्न

    इस समस्या में, हमें एक एन वर्टेक्स ट्री और क्यू प्रश्न दिए गए हैं जिनमें से प्रत्येक में दो मान i और j शामिल हैं। हमारा काम एक पेड़ में पूर्वजों-वंशज संबंधों के लिए एक प्रश्न को हल करने के लिए एक प्रोग्राम बनाना है। प्रत्येक प्रश्न को हल करने के लिए, हमें यह जांचना होगा कि क्या नोड i पेड़ में नोड j

  1. सरणी तत्वों के गुणन के लिए C++ प्रोग्राम

    पूर्णांक तत्वों की एक सरणी के साथ दिया गया और कार्य एक सरणी के तत्वों को गुणा करना और इसे प्रदर्शित करना है। उदाहरण Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए कार्यक्रम में उपयोग क

  1. C++ में ऑक्टल से दशमलव रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक ऑक्टल नंबर के साथ दिए गए, कार्य दिए गए ऑक्टल नंबर को एक दशमलव संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 से दर्शाया जाता है और अष्टक संख्या को आधार 8 से 0 से शुरू होकर 7 तक दर्शाया जाता है जबकि दशमलव संख्या 0 – 9 से शुरू होने वाला कोई भी अंक हो सकता है। अष्टक