परिचय
इस ट्यूटोरियल में हम सीखेंगे कि C++ में सिंगल लिंक्ड लिस्ट से दी गई पोजीशन (position) पर स्थित नोड को कैसे डिलीट किया जाता है। यह एक सामान्य ऑपरेशन है जो इंडेक्स-आधारित एक्सेस की आवश्यकता होने पर उपयोगी होता है।
समस्या समाधान के चरण
- डेटा और next पॉइंटर के साथ एक स्ट्रक्चर परिभाषित करें।
- सिंगल लिंक्ड लिस्ट में नोड डालने का फंक्शन लिखें।
- डमी डेटा के साथ लिस्ट को इनिशियलाइज़ करें।
- डिलीट करने के लिए पोजीशन इनिशियलाइज़ करें।
- लिंक्ड लिस्ट पर पुनरावृत्ति करें और दी गई पोजीशन वाले नोड को ढूंढें।
- नोड डिलीट करने का फंक्शन लिखते समय तीन स्थितियों पर विचार करें:
- यदि नोड हेड नोड है (पोजीशन 1), तो हेड को अगले नोड पर ले जाएं।
- यदि नोड मध्य में है, तो अगले नोड को पिछले नोड से लिंक करें।
- यदि नोड अंतिम है, तो पिछले नोड का लिंक हटा दें।
उदाहरण कोड
#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) पर स्थित नोड को सफलतापूर्वक डिलीट किया। समय जटिलता O(n) है क्योंकि हमें पोजीशन तक पहुंचने के लिए ट्रैवर्स करना पड़ता है। यदि पोजीशन अमान्य है, तो फंक्शन कुछ नहीं करता। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।