इस ट्यूटोरियल में, हम सीखेंगे कि लिंक की गई सूची में मध्य नोड को कैसे हटाया जाए।
समस्या का समाधान सीधा है। हमारे पास दो पॉइंटर्स होंगे जिनमें से एक एक बार में एक नोड को मूव करता है और दूसरा एक बार में दो नोड्स को मूव करता है। जब तक दूसरा पॉइंटर अंतिम नोड तक पहुंचता है, तब तक पहला लिंक की गई सूची के बीच में होगा।
आइए समस्या को हल करने के लिए चरणों को देखें।
-
लिंक की गई सूची नोड के लिए एक स्ट्रक्चर नोड लिखें।
-
डमी डेटा के साथ लिंक की गई सूची को प्रारंभ करें।
-
लिंक की गई सूची को हटाने के लिए एक फ़ंक्शन लिखें।
-
लिंक्ड लिस्ट हेड पॉइंटर के साथ टू-पॉइंटर्स (धीमे और तेज़) को इनिशियलाइज़ करें।
-
लिंक की गई सूची पर तब तक पुनरावृति करें जब तक कि तेज़ सूचक अंत तक न पहुँच जाए।
-
धीमे पॉइंटर को अगले एक नोड पर ले जाएँ।
-
फ़ास्ट पॉइंटर को अगले नोड के अगले नोड पर ले जाएँ।
-
हेड पॉइंटर लौटाएं
-
-
लिंक की गई सूची प्रिंट करें।
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node* next; }; struct Node* deleteMiddleNode(struct Node* head) { if (head == NULL) { return NULL; } if (head->next == NULL) { delete head; return NULL; } struct Node* slow_ptr = head; struct Node* fast_ptr = head; struct Node* prev; while (fast_ptr != NULL && fast_ptr->next != NULL) { fast_ptr = fast_ptr->next->next; prev = slow_ptr; slow_ptr = slow_ptr->next; } prev->next = slow_ptr->next; delete slow_ptr; return head; } void printLinkedList(struct Node* node) { while (node != NULL) { cout << node->data << " -> "; node = node->next; } cout << "Null" << endl; } Node* newNode(int data) { struct Node* temp = new Node; temp->data = data; temp->next = NULL; return temp; } int main() { struct Node* head = newNode(1); head->next = newNode(2); head->next->next = newNode(3); head->next->next->next = newNode(4); head->next->next->next->next = newNode(5); head->next->next->next->next->next = newNode(6); cout << "Linked list before deleting middle node: "; printLinkedList(head); head = deleteMiddleNode(head); cout << "Linked List after deleting middle node: "; printLinkedList(head); return 0; }
आउटपुट
यदि आप उपरोक्त प्रोग्राम को निष्पादित करते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
Linked list before deleting middle node: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> Null Linked List after deleting middle node: 1 -> 2 -> 3 -> 5 -> 6 -> Null
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।