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

C++ में किसी लिंक की गई सूची में पहले गैर-दोहराव

इस समस्या में, हमें N आकार की एक लिंक की गई सूची LL दी जाती है। हमारा कार्य लिंक्ड सूची में गैर-दोहराव खोजने के लिए एक प्रोग्राम बनाना है। ।

लिंक्ड सूची डेटा संरचनाओं का एक क्रम है, जो लिंक के माध्यम से एक साथ जुड़े होते हैं।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input: LL = 4 => 6 => 2 => 4 => 1 => 2 => 6 => 5
Output: 1

स्पष्टीकरण -

The elements with a single occurrence frequency are 1 and 6. Out of these 1 occurred first in the linked list.

समाधान दृष्टिकोण

समस्या को हल करने का एक तरीका हैश टेबल बनाना है जो तत्वों और उनकी घटना आवृत्ति को संग्रहीत करेगा। लिंक की गई सूची में पहले गैर-दोहराए जाने वाले मान को खोजने के लिए, हम लिंक की गई सूची को पार करेंगे और उन तत्वों को सम्मिलित करेंगे जो हैश मैप में मौजूद नहीं हैं, प्रारंभिक आवृत्ति आवृत्ति के साथ। यदि कोई तत्व हैश मैप में मौजूद है तो इसकी घटना को बढ़ाएं आवृत्ति। लिंक की गई सूची का पता लगाने के बाद, हम हैश मैप में उस मान की जांच करेंगे जिसकी आवृत्ति आवृत्ति एक है और पहले मान का सामना करना पड़ा है।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include<bits/stdc++.h>
using namespace std;
struct Node{
   int data;
   struct Node* next;
};
void push(struct Node** head_ref, int new_data){
   struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int findFirstNonRepLL(struct Node *head){
   unordered_map<int, int> freqMap;
   for (Node *temp=head; temp!=NULL; temp=temp->next){
      freqMap[temp->data]++;
   }
   for (Node *temp=head; temp!=NULL; temp=temp->next){
      if (freqMap[temp->data] == 1){
         return temp->data;
      }
   }
   return -1;
}
int main(){
   struct Node* head = NULL;
   push(&head, 5);
   push(&head, 6);
   push(&head, 2);
   push(&head, 1);
   push(&head, 4);
   push(&head, 2);
   push(&head, 6);
   push(&head, 4);
   cout<<"The first non repeating element of the linked list is "<<findFirstNonRepLL(head);
   return 0;
}

आउटपुट

The first non repeating element of the linked list is 1

  1. C++ में एक क्रमबद्ध लिंक्ड सूची में माध्यिका ढूँढना

    इस समस्या में, हमें N तत्वों से युक्त एक क्रमबद्ध लिंक्ड सूची दी गई है। हमारा काम एक क्रमबद्ध लिंक्ड सूची में माध्यिका खोजना . है । सॉर्ट की गई लिंक की गई सूची एक साधारण लिंक्ड सूची है जिसमें सभी तत्वों को एक विशिष्ट क्रम में क्रमबद्ध किया जाता है। उदाहरण NULL माध्यिका लिंक्ड सूची का मध्य तत्व है।

  1. सी ++ में एक लिंक्ड सूची को समतल करना

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

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

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