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

C++ का उपयोग करके लिंक की गई सूची के अंतिम नोड को हटा दें

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

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

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


  1. C++ में एक बहुस्तरीय लिंक्ड सूची को समतल करें

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

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

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

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

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