एक लिंक्ड लिस्ट दी गई है, हमें इसका पहला तत्व हटाना है और नई लिस्ट के हेड का पॉइंटर लौटाना है।
इनपुट: 1 -> 2 -> 3 -> 4 -> 5 -> NULL आउटपुट: 2 -> 3 -> 4 -> 5 -> NULL इनपुट: 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL आउटपुट: 4 -> 6 -> 8 -> 33 -> 67 -> NULL
दिए गए समस्या में, हमें लिस्ट के पहले नोड को हटाना है और अपने हेड को दूसरे तत्व पर ले जाना है और हेड लौटाना है।
समाधान खोजने का दृष्टिकोण
इस समस्या में, हम हेड को अगले स्थान पर ले जा सकते हैं और फिर पिछले नोड को फ्री कर सकते हैं।
उदाहरण
#include <iostream>
using namespace std;
/* लिंक लिस्ट नोड */
struct Node {
int data;
struct Node* next;
};
void push(struct Node** head_ref, int new_data) {
// लिस्ट में डेटा डालना
struct Node* new_node = new Node;
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
int main() {
Node* head = NULL;
push(&head, 12);
push(&head, 29);
push(&head, 11);
push(&head, 23);
push(&head, 8);
auto temp = head; // temp हेड बन जाता है
head = head->next; // हमारा हेड अगला तत्व बन जाता है
delete temp; // हम temp को डिलीट करते हैं यानी पहला तत्व
for (temp = head; temp != NULL; temp = temp->next) // लिस्ट प्रिंट करना
cout << temp->data << " ";
return 0;
}
आउटपुट
23 11 29 12
उपरोक्त कोड की व्याख्या
हमें बस इस प्रोग्राम में हेड को उसके अगले तत्व पर शिफ्ट करना है और फिर पिछले तत्व को डिलीट करना है और फिर नई लिस्ट प्रिंट करना है। दिए गए प्रोग्राम की समग्र समय जटिलता O(1) है जिसका मतलब है कि हमारा प्रोग्राम दिए गए इनपुट पर निर्भर नहीं करता, और यह सबसे अच्छी जटिलता है जिसे हम प्राप्त कर सकते हैं।
निष्कर्ष
इस लेख में, हम लिंक्ड लिस्ट के पहले नोड को हटाने की समस्या को हल करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा दृष्टिकोण भी सीखा। हम इसी प्रोग्राम को अन्य भाषाओं जैसे C, Java, Python, और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा।