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

सी ++ में एक डबल लिंक्ड सूची में एक नोड हटाएं

इस ट्यूटोरियल में, हम सीखेंगे कि डबल लिंक्ड लिस्ट में किसी नोड को कैसे डिलीट किया जाए।

आइए समस्या को हल करने के लिए चरणों को देखें।

  • डेटा, पिछले और अगले पॉइंटर्स के साथ स्ट्रक्चर लिखें।

  • डबल लिंक की गई सूची में नोड डालने के लिए एक फ़ंक्शन लिखें।

  • डमी डेटा के साथ डबल लिंक्ड लिस्ट को इनिशियलाइज़ करें।

  • हटाने के लिए एक नोड लें।

  • नोड को हटाने के लिए एक फ़ंक्शन लिखें। नोड को हटाते समय निम्नलिखित तीन मामलों पर विचार करें।

    • अगर नोड हेड नोड है, तो हेड को अगले नोड पर ले जाएं।

    • यदि नोड मध्य नोड है, तो अगले नोड को पिछले नोड से लिंक करें

    • यदि नोड एंड नोड है, तो पिछले नोड लिंक को हटा दें।आइए कोड देखें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node *prev, *next;
};
void deleteNode(Node** head_ref, Node* del) {
   if (*head_ref == NULL || del == NULL) {
      return;
   }
   if (*head_ref == del) {
      *head_ref = del->next;
   }
   if (del->next != NULL) {
      del->next->prev = del->prev;
   }
   if (del->prev != NULL) {
      del->prev->next = del->next;
   }
   free(del);
   return;
}
void insertNode(Node** head_ref, int new_data) {
   Node* new_node = new Node();
   new_node->data = new_data;
   new_node->prev = NULL;
   new_node->next = (*head_ref);
   if ((*head_ref) != NULL) {
      (*head_ref)->prev = new_node;
   }
   (*head_ref) = new_node;
}
void printLinkedList(Node* node) {
   while (node != NULL) {
      cout << node->data << " -> ";
      node = node->next;
   }
}
int main() {
   Node* head = NULL;
   insertNode(&head, 1);
   insertNode(&head, 2);
   insertNode(&head, 3);
   insertNode(&head, 4);
   insertNode(&head, 5);
   cout << "Linked List before deletion:" << endl;
   printLinkedList(head);
   deleteNode(&head, head->next);
   cout << "\nLinked List after deletion:" << endl;
   printLinkedList(head);
   return 0;
}

आउटपुट

यदि आप उपरोक्त प्रोग्राम को निष्पादित करते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

Linked List before deletion:
5 -> 4 -> 3 -> 2 -> 1 ->
Linked List after deletion:
5 -> 3 -> 2 -> 1 ->

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।


  1. C++ में एक बहुस्तरीय लिंक्ड सूची को समतल करें

    इस समस्या में, हमें एक बहुस्तरीय लिंक्ड सूची दी गई है। हमारा काम एक बहुस्तरीय लिंक्ड सूची को समतल करने के लिए एक प्रोग्राम बनाना है। फ़्लैटनिंग ऑपरेशन इस तरह से किया जाता है कि पहले स्तर के नोड्स पहले लिंक की गई सूची में होंगे और फिर दूसरे स्तर के नोड होंगे। बहुस्तरीय लिंक की गई सूची एक बहु-आयामी

  1. सी++ में डबल लिंक्ड सर्कुलर सूचियां

    सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व को इंगित करता है और अंतिम तत्व पहले तत्व को इंगित करता है। सिंगल लिंक्ड लिस्ट और डबल लिंक्ड लिस्ट दोनों को सर्कुलर लिंक्ड लिस्ट में बनाया जा सकता है। डबल लिंक्ड लिस्ट में, अंतिम नोड का अगला पॉइंटर पहले नोड को इंगित करता

  1. पायथन में एक लिंक्ड सूची में नोड हटाएं

    मान लीजिए कि हमारे पास कुछ तत्वों के साथ एक लिंक्ड सूची है। हमारा काम एक फ़ंक्शन लिखना है जो दिए गए नोड को सूची से हटा देगा। तो अगर सूची 1 → 3 → 5 → 7 → 9 की तरह है, और 3 को हटाने के बाद, यह 1 → 5 → 7 → 9 होगा। मान लें कि हमारे पास पॉइंटर नोड है जो इंगित करता है कि नोड को हटाया जाना है, हमें नोड को