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

C++ में क्रमबद्ध सूची से डुप्लिकेट निकालें


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

इसलिए, यदि इनपुट [1,1,2,3,3,3,4,5,5] जैसा है, तो आउटपुट [1,2,3,4,5]

होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • डमी:=वैल्यू-इनफ़ के साथ एक नया नोड बनाएं

  • डमी के आगे :=सिर

  • कर्व =डमी

  • जबकि कर्व गैर-शून्य है, करें -

    • नेक्स्ट =नेक्स्ट ऑफ़ कर्ट

    • जबकि (अगला शून्य नहीं है और अगले का वैल करंट के वैल के समान है), करें -

      • अगला :=अगले का अगला

    • अगली धारा :=अगला

    • वर्तमान:=अगला

  • डमी के आगे लौटें

उदाहरण

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class ListNode{
   public:
      int val;
      ListNode *next;
      ListNode(int data){
         val = data;
         next = NULL;
      }
};
ListNode *make_list(vector<int> v){
   ListNode *head = new ListNode(v[0]);
   for(int i = 1; i<v.size(); i++){
      ListNode *ptr = head;
      while(ptr->next != NULL){
         ptr = ptr->next;
      }
      ptr->next = new ListNode(v[i]);
   }
   return head;
}
void print_list(ListNode *head){
   ListNode *ptr = head;
   cout << "[";
   while(ptr){
      cout << ptr->val << ", ";
      ptr = ptr->next;
   }
   cout << "]" << endl;
}
class Solution {
public:
   ListNode* deleteDuplicates(ListNode* head) {
      ListNode*dummy = new ListNode(INT_MIN);
      dummy->next = head;
      ListNode * curr = dummy;
      while(curr){
         ListNode * next = curr->next;
         while(next && next->val==curr->val)
            next = next->next;
         curr->next = next;
         curr=next;
      }
      return dummy->next;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,1,2,3,3,3,4,5,5};
   ListNode *head = make_list(v);
   print_list(ob.deleteDuplicates(head));
}

इनपुट

{1,1,2,3,3,3,4,5,5}

आउटपुट

[1, 2, 3, 4, 5, ]

  1. जावास्क्रिप्ट का उपयोग करके लिंक की गई सूची से तत्वों को हटा दें

    एक लिंक की गई सूची में किसी तत्व को हटाना बहुत आसान है। हमें बस उस नोड से छुटकारा पाने की जरूरत है जिसे हम हटाना चाहते हैं, यानी उसका संदर्भ खो दें। ऐसे 3 मामले हैं जिन पर हमें विचार करने की आवश्यकता है - सिर से किसी एलीमेंट को हटाना:इस मामले में, हम बस हेड =हेड.नेक्स्ट असाइन कर सकते हैं। इस तरह हम

  1. जावास्क्रिप्ट में एकल लिंक की गई सूची से तत्वों को हटा दें

    मान लीजिए, हमारे पास इस तरह एक सिंगल लिंक्ड लिस्ट है - const list = {    value: 1,    next: {       value: 2,       next: {          value: 3,          next: {            

  1. एंड्रॉइड में एक क्रमबद्ध लिंक्ड सूची से डुप्लिकेट कैसे निकालें?

    यह उदाहरण एंड्रॉइड में एक क्रमबद्ध लिंक की गई सूची से डुप्लिकेट को निकालने के तरीके के बारे में प्रदर्शित करता है। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_ma