हमें एक सिंगली लिंक्ड लिस्ट प्रदान की गई है, और हमें उस लिस्ट से अंतिम नोड को हटाने का कार्य दिया गया है। इस समस्या में, हम बस दी गई लिस्ट को पार करने जा रहे हैं और अंतिम नोड को हटा देंगे।
समाधान खोजने का दृष्टिकोण
इस दृष्टिकोण में, हम दी गई लिस्ट के माध्यम से जाते हैं, और हम पिछले नोड और वर्तमान नोड को ट्रैक करते हैं। अब जब हमारा वर्तमान नोड अंतिम नोड बन जाता है, तो हम previous->next को NULL में बदल देते हैं और वर्तमान नोड को डिलीट कर देते हैं।
उदाहरण
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node* next;
};
void push(struct Node** ref, int new_data) {
// नोड डालना
struct Node* new_n = new Node;
new_n->data = new_data;
new_n->next = (*ref);
(*ref) = new_n;
}
int main() {
Node* head = NULL;
push(&head, 12);
push(&head, 29);
push(&head, 11);
push(&head, 23);
push(&head, 8);
auto curr = head, prev = head;
if (!curr || !curr->next) { // यदि लिस्ट में केवल एक तत्व है या लिस्ट खाली है
cout << "खाली\n";
} else {
while (curr) { // जब तक curr != NULL
if (!curr->next) {
prev->next = NULL;
delete(curr); // स्पेस फ्री करना
break;
}
prev = curr;
curr = curr->next; // अगले नोड पर जाना
}
}
for (Node* temp = head; temp != NULL; temp = temp->next) // डेटा प्रिंट करना
cout << temp->data << " ";
return 0;
}
आउटपुट
8 23 11 29
उपरोक्त कोड की व्याख्या
इस दृष्टिकोण में, हम ऐरे को पार करते हैं, वर्तमान नोड और पिछले नोड को ट्रैक करते हुए। अब जब हमारा वर्तमान नोड अंतिम नोड बन जाता है, तो हम previous->next को NULL में बदल देते हैं और वर्तमान नोड को डिलीट कर देते हैं। दिए गए प्रोग्राम की समग्र समय जटिलता O(N) है, जहां N हमारी दी गई लिस्ट का आकार है।
समय जटिलता - O(N)
N: हमारे ऐरे का आकार
निष्कर्ष
इस लेख में, हम दी गई लिंक्ड लिस्ट से अंतिम नोड को हटाने की समस्या को हल करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा दृष्टिकोण भी सीखा। हम इसी प्रोग्राम को अन्य भाषाओं जैसे C, Java, Python, और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा।