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

C++ प्रोग्राम दिए गए सिंगली लिंक्ड लिस्ट में पहले नोड को हटाने के लिए


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

मान लीजिए हमारे पास एक सिंगली लिंक्ड लिस्ट है और हमें इस लिंक्ड लिस्ट से पहले नोड को हटाने की आवश्यकता है। उदाहरण के लिए,

इनपुट 1 - 4 → 3 → 2 → 1

आउटपुट - 3 → 2 → 1 →

व्याख्या - '4' दी गई सिंगली लिंक्ड लिस्ट में पहला नोड है। पहले नोड को हटाने के बाद, लिंक्ड लिस्ट 3→2→1 होगी।

इनपुट 2 - 1 → 2 → 3 →

आउटपुट - 2 → 3 →

व्याख्या - पहले नोड '1' को हटाने के बाद, लिंक्ड लिस्ट 2 → 3 होगी।

इस प्रॉब्लम को हल करने का दृष्टिकोण

प्रारंभ में, हमारे पास एक लिंक्ड लिस्ट है जिसमें नोड्स होते हैं। प्रत्येक नोड में डेटा और अगले नोड का पता होता है। लिंक्ड लिस्ट में डेटा डालने के बाद, हम पहले नोड को हटाने के लिए एक फंक्शन बनाएंगे।

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

  • एक फंक्शन deleteAtHead(node*& head) हेड का पॉइंटर लेता है और लिंक्ड लिस्ट के पहले नोड को हटाता है।

  • एक अस्थायी पॉइंटर बनाएं जो प्रारंभ में हेड की ओर इशारा करता है।

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

  • अस्थायी पॉइंटर को हटाएं।

  • लिंक्ड लिस्ट लौटाएं।

उदाहरण

#include <iostream>
using namespace std;

class node {
public:
    int data;
    node* next;
    node(int d) {
        data = d;
        next = NULL;
    }
};

void insertAtFirstNode(node*& head, int data) {
    node* n = new node(data);
    n->next = head;
    head = n;
}

void print(node* head) {
    while (head != NULL) {
        cout << head->data << "->";
        head = head->next;
    }
    cout << endl;
}

void deleteAtFirst(node*& head) {
    if (head == NULL) {
        return;
    }
    node* temp = head;
    head = head->next;
    delete temp;
    return;
}

int main() {
    node* head = NULL;
    insertAtFirstNode(head, 1);
    insertAtFirstNode(head, 2);
    insertAtFirstNode(head, 3);
    insertAtFirstNode(head, 4);
    deleteAtFirst(head);
    print(head);
}

आउटपुट

उपरोक्त कोड चलाने पर निम्न आउटपुट उत्पन्न होगा,

3 → 2 → 1 →

चूंकि दी गई सिंगली लिंक्ड लिस्ट 4 → 3 → 2 → 1 → है, पहले नोड को हटाने के बाद जो 4 है, लिंक्ड लिस्ट 3 → 2 → 1 → बन जाएगी।


  1. - C++ प्रोग्राम: लिंक्ड लिस्ट के पहले k नोड्स का गुणनफल ज्ञात करना

    मान लें हमारे पास लिंक्ड लिस्ट में कुछ तत्व हैं। हमें पहले k तत्वों का गुणनफल परिणाम ज्ञात करना है। k का मान भी दिया गया है। इसलिए यदि सूची [5, 7, 3, 5, 6, 9] की तरह है, और k = 3, तो परिणाम 5 * 7 * 3 = 105 होगा। प्रक्रिया सीधी है। हम बस बाईं ओर से शुरू होने वाले वर्तमान तत्व को पढ़ते हैं, फिर इसे p

  1. - C++ प्रोग्राम: सर्कुलर सिंगली लिंक्ड लिस्ट कार्यान्वयन

    सर्कुलर सिंगली लिंक्ड लिस्ट अंतिम नोड पहले नोड (head) को इंगित करता है, जिससे एक वृत्त बनता है। केवल head संदर्भ से पूरी सूची एक्सेस की जा सकती है। C++ प्रोग्राम उदाहरण next; } while (ptr != head); } int main() { insert(3); insert(1); insert(7); insert(2); insert(9); c

  1. - C++ प्रोग्राम: सिंगली लिंक्ड लिस्ट कार्यान्वयन

    सिंगली लिंक्ड लिस्ट प्रत्येक नोड में डेटा और अगले नोड का संदर्भ होता है। अंतिम नोड NULL इंगित करता है। केवल head से पूरी सूची एक्सेस की जा सकती है। C++ प्रोग्राम उदाहरण next; } } int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout << The link