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

सी ++ में हेड पॉइंटर के बिना लिंक्ड सूची से एक नोड हटाएं

इस ट्यूटोरियल में, हम सीखेंगे कि सिंगल लिंक्ड लिस्ट में बिना हेड पॉइंटर के नोड को कैसे डिलीट किया जाए।

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

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

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

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

  • अगले पॉइंटर का उपयोग करके लिंक की गई सूची से एक नोड लें।

  • डिलीट नोड को अगले नोड पर ले जाएँ।

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void deleteNodeWithoutHead(struct Node* deletingNode) {
   if (deletingNode == NULL) {
      return;
   }
   else {
      if (deletingNode->next == NULL) {
         cout << "Can't delete last node without head" << endl;
         return;
      }
      struct Node* temp = deletingNode->next;
      deletingNode->data = temp->data;
      deletingNode->next = temp->next;
      free(temp);
   }
}
void printLinkedList(Node* head) {
   Node* temp = head;
   while (temp) {
      cout << temp->data << " -> ";
      temp = temp->next;
   }
}
void insertNode(struct Node** head_ref, int new_data) {
   struct Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int main() {
   struct Node* head = NULL;
   insertNode(&head, 1);
   insertNode(&head, 2);
   insertNode(&head, 3);
   insertNode(&head, 4);
   insertNode(&head, 5);
   insertNode(&head, 6);
   cout << "Linked List before deletion:" << endl;
   printLinkedList(head);
   Node* del = head->next;
   deleteNodeWithoutHead(del);
   cout << "\nLinked List after deletion:" << endl;
   printLinkedList(head);
   return 0;
}

आउटपुट

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

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

निष्कर्ष

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


  1. सी ++ में लिंक्ड लिस्ट रैंडम नोड

    मान लीजिए कि हमारे पास एक सिंगल लिंक्ड लिस्ट है, हमें लिंक्ड लिस्ट से एक रैंडम नोड का मान खोजना होगा। यहां प्रत्येक नोड के चुने जाने की संभावना समान होनी चाहिए। तो उदाहरण के लिए, यदि सूची [1,2,3] है, तो यह 1, 2, और 3 श्रेणी में यादृच्छिक नोड लौटा सकती है। इसे हल करने के लिए, हम इन चरणों का पालन करे

  1. C++ में लिंक्ड लिस्ट में Nth नोड प्राप्त करने के लिए एक फंक्शन लिखें

    यहां, हमें एक लिंक्ड लिस्ट और एक इंडेक्स दिया गया है। लिंक की गई सूची में Nth नोड प्राप्त करने के लिए हमें एक फ़ंक्शन लिखना होगा। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट linked list = 34 -> 4 -> 9 -> 1 , n = 2 आउटपुट 9 n द्वारा निर्दिष्ट नोड पर जाने के लिए। हम लिंक की गई सूची में

  1. C++ में रिवर्स लिंक्ड लिस्ट II

    मान लीजिए हमारे पास एक लिंक्ड सूची है। हमें नोड्स को स्थिति m से n तक उलटना होगा। हमें इसे एक पास में करना होगा। इसलिए यदि सूची [1,2,3,4,5] और m =2 और n =4 है, तो परिणाम [1,4,,3,2,5] होगा। आइए चरणों को देखें - दो तरीके होंगे, रिवर्सएन () और रिवर्सबीच ()। रिवर्सबीच () मुख्य विधि के रूप में काम करेग