यह C++ प्रोग्राम एक डेटा सेट में मोड (Mode) खोजता है - वह मान जो सबसे अधिक बार आता है। यह लिंक्ड लिस्ट आधारित दृष्टिकोण का उपयोग करता है जहां प्रत्येक नोड मान और उसकी फ्रीक्वेंसी स्टोर करता है।
एल्गोरिदम
शुरुआत
1. फंक्शन insertInSet() - सेट में डेटा इन्सर्ट करें:
- न्यू नोड और टेम्प नोड बनाएं
- यदि हेड NULL है, तो न्यू नोड को हेड असाइन करें और काउंट बढ़ाएं
- इन्सर्शन के दौरान इन्सर्शन सॉर्ट करें डेटा सॉर्ट करने के लिए
- यदि न्यू नोड का डेटा सेट में मौजूद किसी तत्व के बराबर है, तो केवल काउंट इन्क्रीमेंट करें
समाप्ति
उदाहरण कोड
#include <iostream>
using namespace std;
struct Node {
int data;
int count;
Node *next;
};
Node* insertInSet(Node *head, int val) {
Node *newNode = new Node;
newNode->data = val;
newNode->count = 0;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
head->count++;
return head;
}
// शुरुआत में इन्सर्ट करने की जांच
if (newNode->data < head->data) {
newNode->next = head;
head = newNode;
newNode->count++;
return head;
} else if (newNode->data == head->data) {
head->count++;
return head;
}
Node *t = head;
while (t->next != nullptr) {
if (newNode->data == t->next->data) {
t->next->count++;
return head;
}
if (newNode->data < t->next->data)
break;
t = t->next;
}
newNode->next = t->next;
t->next = newNode;
newNode->count++;
return head;
}
int main() {
int n, num, maxFreq = 0, mode = 0;
Node *head = nullptr;
cout << "\nEnter the number of data elements: ";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "Enter element " << i+1 << ": ";
cin >> num;
head = insertInSet(head, num);
}
cout << "\nSorted Distinct Data: ";
while (head != nullptr) {
if (maxFreq < head->count) {
mode = head->data;
maxFreq = head->count;
}
cout << "->" << head->data << "(" << head->count << ")";
head = head->next;
}
cout << "\nThe Mode of given data set is " << mode
<< " and occurred " << maxFreq << " times.";
return 0;
}
आउटपुट
Enter the number of data elements: 10 Enter element 1: 1 Enter element 2: 2 Enter element 3: 0 Enter element 4: 2 Enter element 5: 3 Enter element 6: 7 Enter element 7: 6 Enter element 8: 2 Enter element 9: 1 Enter element 10: 1 Sorted Distinct Data: ->0(1)->1(3)->2(3)->3(1)->6(1)->7(1) The Mode of given data set is 1 and occurred 3 times.
महत्वपूर्ण नोट: इस उदाहरण में 1 और 2 दोनों 3 बार आते हैं (बाईमोडल डिस्ट्रीब्यूशन)। प्रोग्राम पहला मिला मोड (1) दिखाता है। एक से अधिक मोड होने पर सभी मोड दिखाने के लिए कोड संशोधित किया जा सकता है।
बेहतर दृष्टिकोण: C++ STL में std::map या std::unordered_map का उपयोग करके इसे सरल बनाया जा सकता है।