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

C++ में डबल लिंक्ड लिस्ट में एक नोड को डिलीट करना


परिचय

इस ट्यूटोरियल में हम सीखेंगे कि C++ में डबल लिंक्ड लिस्ट से एक विशिष्ट नोड को कैसे डिलीट किया जाता है। यह फंडामेंटल ऑपरेशन है जो कई लिंक्ड लिस्ट मैनिपुलेशन का आधार बनता है।

समस्या समाधान के चरण

  1. डेटा, prev और next पॉइंटर्स के साथ एक स्ट्रक्चर परिभाषित करें।
  2. डबल लिंक्ड लिस्ट में नोड डालने का फंक्शन लिखें।
  3. डमी डेटा के साथ लिस्ट को इनिशियलाइज़ करें।
  4. डिलीट करने के लिए एक नोड चुनें।
  5. नोड डिलीट करने का फंक्शन लिखते समय तीन स्थितियों पर विचार करें:
    • यदि नोड हेड नोड है, तो हेड को अगले नोड पर ले जाएं।
    • यदि नोड मध्य में है, तो अगले नोड को पिछले नोड से लिंक करें।
    • यदि नोड अंतिम है, तो पिछले नोड का लिंक हटा दें।

उदाहरण कोड

#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);
}

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 ->

निष्कर्ष

इस प्रोग्राम में हमने डबल लिंक्ड लिस्ट से एक विशिष्ट नोड (दूसरा नोड) को सफलतापूर्वक डिलीट किया। डबल लिंक्ड लिस्ट में डिलीट ऑपरेशन O(1) समय में होता है क्योंकि हमारे पास पिछले नोड का सीधा एक्सेस होता है। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।


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

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

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

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

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

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