हमें एक एकल लिंक की गई सूची प्रदान की जाती है, और हमें उस सूची से अंतिम नोड को हटाने का काम सौंपा जाता है। इस समस्या में, हम केवल दी गई सूची को पार करने जा रहे हैं और बस अंतिम नोड को हटा दें।
समाधान खोजने के लिए दृष्टिकोण
इस दृष्टिकोण में, हम दी गई सूची के माध्यम से जाते हैं, और हम पिछले नोड और वर्तमान नोड का ट्रैक रखते हैं। अब जब हमारा वर्तमान नोड अंतिम नोड बन जाता है, तो हम पिछले -> को NULL के बगल में बदल देते हैं और वर्तमान नोड को हटा देते हैं।
उदाहरण
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node* next;
};
void push(struct Node** ref, int new_data) { // pushing the node
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) // if list only has one element or the list is empty
cout << "Empty\n";
else {
while (curr) { // while curr != NULL
if (!curr -> next) {
prev -> next = NULL;
delete(curr); // freeing the space
break;
}
prev = curr;
curr = curr -> next; // moving to the next node
}
}
for (Node* temp = head; temp != NULL; temp = temp->next) // printing the data
cout << temp->data << " ";
return 0;
} आउटपुट
8 23 11 29
उपरोक्त कोड की व्याख्या
इस दृष्टिकोण में, हम वर्तमान नोड और पिछले नोड का ट्रैक रखते हुए, सरणी से गुजरते हैं। अब जब हमारा वर्तमान नोड अंतिम नोड बन जाता है, तो हम पिछले -> को NULL के बगल में बदल देते हैं और वर्तमान नोड को हटा देते हैं। दिए गए कार्यक्रम की समग्र समय जटिलता ओ (एन) है, जहां एन हमारी दी गई सूची का आकार है।
समय जटिलता - O(N)
एन:हमारे सरणी का आकार
निष्कर्ष
इस लेख में, हम दी गई लिंक्ड सूची से अंतिम नोड को हटाने के लिए एक समस्या का समाधान करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और हमारे द्वारा हल किए गए संपूर्ण दृष्टिकोण को भी सीखा। हम उसी प्रोग्राम को अन्य भाषाओं जैसे सी, जावा, पायथन और अन्य भाषाओं में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।