डेटा संरचना - संदेह से जुड़ी सूची

डाउनली लिंक्ड लिस्ट लिंक्ड लिस्ट की एक भिन्नता है जिसमें सिंगल लिंक्ड लिस्ट की तुलना में दोनों तरह से नेविगेशन संभव है, आगे और पीछे आसानी से। दोहरी रूप से जुड़ी सूची की अवधारणा को समझने के लिए महत्वपूर्ण शर्तें निम्नलिखित हैं।

  • Link - लिंक की गई सूची के प्रत्येक लिंक में एक तत्व नामक एक डेटा संग्रहीत किया जा सकता है।

  • Next - लिंक्ड लिस्ट के प्रत्येक लिंक में नेक्सट नामक अगली लिंक का लिंक होता है।

  • Prev - लिंक्ड लिस्ट के प्रत्येक लिंक में पिछले लिंक का लिंक होता है, जिसे Prev कहा जाता है।

  • LinkedList - एक लिंक की गई सूची में पहले लिंक के लिए लिंक लिंक होता है जिसे फर्स्ट कहा जाता है और लास्ट के आखिरी लिंक को।

डबली लिंक्ड लिस्ट रिप्रेजेंटेशन

उपरोक्त उदाहरण के अनुसार, निम्नलिखित महत्वपूर्ण बिंदुओं पर विचार किया जाना है।

  • डाउनली लिंक्ड लिस्ट में एक लिंक एलिमेंट होता है जिसे फर्स्ट और लास्ट कहा जाता है।

  • प्रत्येक लिंक एक डेटा फ़ील्ड (ओं) और दो लिंक फ़ील्ड्स को ले जाता है जिसे अगले और मौजूदा कहा जाता है।

  • प्रत्येक लिंक अपने अगले लिंक का उपयोग करके अपने अगले लिंक के साथ जुड़ा हुआ है।

  • प्रत्येक लिंक अपने पिछले लिंक का उपयोग करके अपने पिछले लिंक से जुड़ा हुआ है।

  • अंतिम लिंक सूची के अंत को चिह्नित करने के लिए एक लिंक को अशक्त करता है।

मूलभूत क्रियाएं

एक सूची द्वारा समर्थित मूल संचालन निम्नलिखित हैं।

  • Insertion - सूची की शुरुआत में एक तत्व जोड़ता है।

  • Deletion - सूची की शुरुआत में एक तत्व को हटाता है।

  • Insert Last - सूची के अंत में एक तत्व जोड़ता है।

  • Delete Last - सूची के अंत से एक तत्व हटाता है।

  • Insert After - सूची के एक आइटम के बाद एक तत्व जोड़ता है।

  • Delete - कुंजी का उपयोग करके सूची से एक तत्व हटाता है।

  • Display forward - आगे की सूची में पूरी सूची प्रदर्शित करता है।

  • Display backward - पूरी सूची को पिछड़े तरीके से प्रदर्शित करता है।

निवेशन ऑपरेशन

निम्नलिखित कोड दोहरे लिंक की गई सूची की शुरुआत में सम्मिलन ऑपरेशन को दर्शाता है।

उदाहरण

//insert link at the first location
void insertFirst(int key, int data) {

   //create a link
   struct node *link = (struct node*) malloc(sizeof(struct node));
   link->key = key;
   link->data = data;
	
   if(isEmpty()) {
      //make it the last link
      last = link;
   } else {
      //update first prev link
      head->prev = link;
   }

   //point it to old first link
   link->next = head;
	
   //point first to new first link
   head = link;
}

विलोपन ऑपरेशन

निम्नलिखित कोड दोहरे लिंक की गई सूची की शुरुआत में डिलीट ऑपरेशन को दर्शाता है।

उदाहरण

//delete first item
struct node* deleteFirst() {

   //save reference to first link
   struct node *tempLink = head;
	
   //if only one link
   if(head->next == NULL) {
      last = NULL;
   } else {
      head->next->prev = NULL;
   }
	
   head = head->next;
	
   //return the deleted link
   return tempLink;
}

एक ऑपरेशन के अंत में प्रविष्टि

निम्नलिखित कोड दोहरे लिंक की गई सूची के अंतिम स्थान पर सम्मिलन ऑपरेशन को प्रदर्शित करता है।

उदाहरण

//insert link at the last location
void insertLast(int key, int data) {

   //create a link
   struct node *link = (struct node*) malloc(sizeof(struct node));
   link->key = key;
   link->data = data;
	
   if(isEmpty()) {
      //make it the last link
      last = link;
   } else {
      //make link a new last link
      last->next = link;     
      
      //mark old last node as prev of new link
      link->prev = last;
   }

   //point last to new last node
   last = link;
}

सी प्रोग्रामिंग भाषा में कार्यान्वयन देखने के लिए, कृपया यहां क्लिक करें ।