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

C++ प्रोग्राम में लिंक की गई सूची के M नोड्स के बाद N नोड्स हटाएं

इस ट्यूटोरियल में, हम सीखेंगे कि N . को कैसे हटाएं M . के बाद नोड्स लिंक की गई सूची में नोड्स।

आइए समस्या को हल करने के लिए चरणों को देखें।

  • लिंक की गई सूची नोड के लिए एक स्ट्रक्चर नोड लिखें।

  • डमी डेटा के साथ लिंक की गई सूची को प्रारंभ करें।

  • एम नोड्स के बाद एन नोड्स को हटाने के लिए एक फ़ंक्शन लिखें।

    • हेड पॉइंटर के साथ पॉइंटर को इनिशियलाइज़ करें।

    • लिंक की गई सूची के अंत तक पुनरावृति करें।

    • M नोड्स तक पॉइंटर को अगले नोड पर ले जाएँ।

    • एन नोड्स हटाएं

    • पॉइंटर को अगले नोड पर ले जाएँ

  • लिंक की गई सूची प्रिंट करें

उदाहरण

आइए कोड देखें।

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node *next;
};
void insertNode(Node ** head_ref, int new_data) {
   Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   *head_ref = new_node;
}
void printLinkedList(Node *head) {
   Node *temp = head;
   while (temp != NULL) {
      cout<< temp->data << " -> ";
      temp = temp->next;
   }
   cout << "Null" << endl;
}
void deleteNNodesAfterMNodes(Node *head, int M, int N) {
   Node *current = head, *temp;
   int count;
   while (current) {
      // skip M nodes
      for (count = 1; count < M && current!= NULL; count++) {
         current = current->next;
      }
      // end of the linked list
      if (current == NULL) {
         return;
      }
      // deleting N nodes after M nodes
      temp = current->next;
      for (count = 1; count <= N && temp != NULL; count++) {
         Node *deletingNode = temp;
         temp = temp->next;
         free(deletingNode);
      }
      current->next = temp;
      current = temp;
   }
}
int main() {
   Node* head = NULL;
   int M = 1, N = 2;
   insertNode(&head, 1);
   insertNode(&head, 2);
   insertNode(&head, 3);
   insertNode(&head, 4);
   insertNode(&head, 5);
   insertNode(&head, 6);
   insertNode(&head, 7);
   insertNode(&head, 8);
   insertNode(&head, 9);
   cout << "Linked list before deletion: ";
   printLinkedList(head);
   deleteNNodesAfterMNodes(head, M, N);
   cout << "Linked list after deletion: ";
   printLinkedList(head);
   return 0;
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

Linked list before deletion: 9 -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> Null
Linked list after deletion: 9 -> 6 -> 3 -> Null

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।


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

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

  1. सी ++ में रिकर्सन का उपयोग करके लिंक की गई सूची के वैकल्पिक नोड्स प्रिंट करें

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

  1. पायथन में लिंक की गई सूची से m नोड्स के बाद n नोड्स को हटाने का कार्यक्रम

    मान लीजिए कि हमें एक लिंक्ड सूची दी गई है जिसमें हेड के रूप में प्रारंभ नोड है, और दो पूर्णांक संख्याएं एम और एन हैं। हमें सूची को पार करना होगा और कुछ नोड्स को हटाना होगा जैसे कि पहले m नोड्स को सूची में रखा जाता है और अगले n नोड्स को पहले m नोड्स को हटा दिए जाने के बाद। हम इसे तब तक करते हैं जब तक