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

C++ में डबली लिंक्ड लिस्ट में रैंडम पॉइंटर को ठीक करें

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

इसके लिए हमें एक डबल लिंक्ड सूची प्रदान की जाएगी जिसमें एक नोड में एक यादृच्छिक सूचक होगा। हमारा काम उस तत्व को सुधारना है जिसे सूचक को इंगित करना चाहिए यानी उसके आगे वाला तत्व।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
//node structure for doubly linked list
struct node {
   int data;
   node* next;
   node* prev;
};
//new node creation
node* newNode(int data){
   node* temp = new node;
   temp->data = data;
   temp->next = temp->prev = NULL;
   return temp;
}
//correcting the random pointer
void get_cpointer(node*& head){
   if (!head)
      return;
   node* temp = head;
   if (head->next && head->next->prev != head) {
      head->next->prev = head;
      return;
   }
   //changing if the position is incorrect
   if (head->prev != NULL) {
      head->prev = NULL;
      return;
   }
   temp = temp->next;
   while (temp) {
      if (temp->next && temp->next->prev != temp) {
         temp->next->prev = temp;
         return;
      }
      else if (temp->prev && temp->prev->next != temp) {
         temp->prev->next = temp;
         return;
      }
      temp = temp->next;
   }
}
//printing the doubly linked list
void printList(node* head) {
   node* temp = head;
   while (temp) {
      cout << temp->data << " (";
      cout << (temp->prev ? temp->prev->data : -1)<< ") ";
      temp = temp->next;
   }
   cout << endl;
}
int main(){
   node* head = newNode(1);
   head->next = newNode(2);
   head->next->prev = head;
   head->next->next = newNode(3);
   head->next->next->prev = head;
   head->next->next->next = newNode(4);
   head->next->next->next->prev = head->next->next;
   cout << "\nIncorrect Linked List: ";
   printList(head);
   get_cpointer(head);
   cout << "\nCorrected Linked List: ";
   printList(head);
   return 0;
}

आउटपुट

Incorrect Linked List: 1 (-1) 2 (1) 3 (1) 4 (3)
Corrected Linked List: 1 (-1) 2 (1) 3 (2) 4 (3)

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

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

  1. सी++ में डबल लिंक्ड लिस्ट का आकार खोजने का कार्यक्रम

    इस समस्या में हमें एक डबल लिंक्ड लिस्ट दी जाती है। हमारा काम C++ में डबली लिंक्ड लिस्ट का आकार खोजने के लिए एक प्रोग्राम बनाना है। डबल लिंक्ड लिस्ट एक विशेष प्रकार की लिंक्ड लिस्ट है जिसमें सिंगल लिंक्ड लिस्ट की तुलना में आगे और पीछे दोनों तरह से नेविगेशन संभव है। डबल लिंक्ड सूचियों की अवधारणा को

  1. सी ++ में डबल लिंक्ड सूची का उपयोग कर प्राथमिकता कतार

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