কম্পিউটার

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. C++ এ সার্কুলার লিঙ্কড লিস্টের নোডের সমষ্টি

  2. C++ এ লিঙ্ক করা তালিকার বিকল্প নোডের যোগফল

  3. C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকার আকার খোঁজার প্রোগ্রাম

  4. C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকা ব্যবহার করে অগ্রাধিকার সারি