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

C++ का उपयोग करके लिंक्ड लिस्ट के अंतिम नोड को हटाना

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

समाधान खोजने का दृष्टिकोण

इस दृष्टिकोण में, हम दी गई लिस्ट के माध्यम से जाते हैं, और हम पिछले नोड और वर्तमान नोड को ट्रैक करते हैं। अब जब हमारा वर्तमान नोड अंतिम नोड बन जाता है, तो हम 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, और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा।

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

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

  1. C++ में सर्कुलर लिंक्ड सूची के नोड्स का योग C++ में सर्कुलर लिंक्ड सूची के नोड्स का योग

    इस समस्या में, हमें एक सर्कुलर लिंक्ड सूची दी गई है। हमारा कार्य एक प्रोग्राम बनाना है जो सर्कुलर लिंक्ड सूची के नोड्स का योग ढूंढे। हमें बस लिंक्ड सूची के सभी नोड मानों को जोड़ना है। कुछ महत्वपूर्ण परिभाषाएं लिंक्ड सूची डेटा संरचनाओं का एक क्रम है, जो लिंक्स के माध्यम से एक साथ जुड़े हुए हैं।

  1. C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार

    हमें डेटा और प्राथमिकता एक पूर्णांक मान के रूप में दी गई है और कार्य दिए गए प्राथमिकता के अनुसार डबल लिंक्ड लिस्ट बनाना और परिणाम प्रदर्शित करना है।कतार एक FIFO डेटा संरचना है जिसमें पहले डाला गया तत्व सबसे पहले हटाया जाता है। प्राथमिकता कतार एक प्रकार की कतार है जिसमें तत्वों को प्राथमिकता के आधार