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

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

इस ट्यूटोरियल में, हम सीखेंगे कि दी गई स्थिति के साथ सिंगल लिंक्ड लिस्ट में नोड को कैसे डिलीट किया जाए।

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

  • डेटा और अगले पॉइंटर के साथ स्ट्रक्चर लिखें।

  • नोड को सिंगल लिंक्ड लिस्ट में डालने के लिए एक फंक्शन लिखें।

  • डमी डेटा के साथ सिंगल लिंक्ड लिस्ट को इनिशियलाइज़ करें।

  • नोड को मिटाने के लिए पोजीशन को इनिशियलाइज़ करें।

  • लिंक की गई सूची पर पुनरावृति करें और नोड को हटाने के लिए दी गई स्थिति के साथ नोड खोजें।

  • नोड को हटाने के लिए एक फ़ंक्शन लिखें। नोड को हटाते समय निम्नलिखित तीन मामलों पर विचार करें।

    • अगर नोड हेड नोड है, तो हेड को अगले नोड पर ले जाएं।

    • यदि नोड मध्य नोड है, तो अगले नोड को पिछले नोड से लिंक करें

    • यदि नोड अंतिम नोड है, तो पिछले नोड लिंक को हटा दें।

उदाहरण

आइए कोड देखें

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node *next;
};
void insertNode(struct Node** head_ref, int new_data) {
   struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
void deleteNode(struct Node **head_ref, int position) {
   if (*head_ref == NULL) {
      return;
   }
   struct Node* temp = *head_ref;
   if (position == 1) {
      *head_ref = temp->next;
      free(temp);
      return;
   }
   for (int i = 2; temp != NULL && i < position - 1; i++) {
      temp = temp->next;
   }
   if (temp == NULL || temp->next == NULL) {
      return;
   }
   struct Node *next = temp->next->next;
   free(temp->next);
   temp->next = next;
}
void printLinkedList(struct Node *node) {
   while (node != NULL) {
      cout << node->data << "->";
      node = node->next;
   }
}
int main() {
   struct Node* head = NULL;
   insertNode(&head, 1);
   insertNode(&head, 2);
   insertNode(&head, 3);
   insertNode(&head, 4);
   insertNode(&head, 5);
   cout << "Linked list before deletion:" << endl;
   printLinkedList(head);
   deleteNode(&head, 1);
   cout << "\nLinked list after deletion:" << endl;
   printLinkedList(head);
   return 0;
}

आउटपुट

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

Linked list before deletion:
5->4->3->2->1->
Linked list after deletion:
4->3->2->1->

निष्कर्ष

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


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

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

  1. जाँच करें कि क्या लिंक की गई सूची C++ में सर्कुलर लिंक्ड सूची है

    यहां हम देखेंगे, लिंक्ड लिस्ट की जांच करने के लिए कुदाल सर्कुलर लिंक्ड लिस्ट है या नहीं। यह जांचने के लिए कि लिंक की गई सूची गोलाकार है या नहीं, हम हेडर नोड को किसी अन्य चर में संग्रहीत करेंगे, फिर सूची को पार करेंगे, यदि हमें किसी नोड के अगले भाग में शून्य मिलता है, तो वह गोलाकार नहीं है, अन्यथा हम

  1. पायथन में एक लिंक्ड सूची में नोड हटाएं

    मान लीजिए कि हमारे पास कुछ तत्वों के साथ एक लिंक्ड सूची है। हमारा काम एक फ़ंक्शन लिखना है जो दिए गए नोड को सूची से हटा देगा। तो अगर सूची 1 → 3 → 5 → 7 → 9 की तरह है, और 3 को हटाने के बाद, यह 1 → 5 → 7 → 9 होगा। मान लें कि हमारे पास पॉइंटर नोड है जो इंगित करता है कि नोड को हटाया जाना है, हमें नोड को