কম্পিউটার

C++ এ ডাবললি লিঙ্ক করা তালিকা থেকে সমস্ত জোড় নোড মুছুন


এই টিউটোরিয়ালে, আমরা শিখব কিভাবে একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা থেকে সমস্ত প্রাইম নোড মুছে ফেলতে হয়।

আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • ডাটা, আগের এবং পরবর্তী পয়েন্টার দিয়ে struct লিখুন।

  • দ্বিগুণ লিঙ্কযুক্ত তালিকায় নোড সন্নিবেশ করার জন্য একটি ফাংশন লিখুন।

  • ডামি ডেটা সহ দ্বিগুণ লিঙ্কযুক্ত তালিকা শুরু করুন।

  • দ্বিগুণ লিঙ্কযুক্ত তালিকার উপর পুনরাবৃত্তি করুন। বর্তমান নোড ডেটা সমান কিনা তা সন্ধান করুন৷

  • যদি বর্তমান ডেটা সমান হয়, তাহলে নোড মুছে দিন।

  • নোড মুছে ফেলার জন্য একটি ফাংশন লিখুন। নোড মুছে ফেলার সময় নিম্নলিখিত তিনটি ক্ষেত্রে বিবেচনা করুন।

    • যদি নোডটি হেড নোড হয়, তাহলে মাথাটি পরবর্তী নোডে নিয়ে যান৷

    • যদি নোডটি মধ্যবর্তী নোড হয়, তাহলে পরবর্তী নোডটিকে আগের নোডের সাথে লিঙ্ক করুন

    • যদি নোডটি শেষ নোড হয়, তাহলে পূর্ববর্তী নোড লিঙ্কটি সরিয়ে দিন।

উদাহরণ

আসুন কোডটি দেখি।

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node *prev, *next;
};
void insertNode(Node** head_ref, int new_data) {
   Node* new_node = (Node*)malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->prev = NULL;
   new_node->next = (*head_ref);
   if ((*head_ref) != NULL) {
      (*head_ref)->prev = new_node;
   }
   (*head_ref) = new_node;
}
void deleteNode(Node** head_ref, Node* del) {
   if (*head_ref == NULL || del == NULL) {
      return;
   }
   if (*head_ref == del) {
      *head_ref = del->next;
   }
   if (del->next != NULL) {
      del->next->prev = del->prev;
   }
   if (del->prev != NULL) {
      del->prev->next = del->next;
   }
   free(del);
   return;
}
void deleteEvenNodes(Node** head_ref) {
   Node* temp = *head_ref;
   Node* next;
   while (temp != NULL) {
      next = temp->next;
      if (temp->data % 2 == 0) {
         deleteNode(head_ref, temp);
      }
      temp = next;
   }
}
void printLinkedList(Node* head) {
   while (head != NULL) {
      cout << head->data << " -> ";
      head = head->next;
   }
}
int main() {
   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);
   deleteEvenNodes(&head);
   cout << "\nLinked List after deletion:" << endl;
   printLinkedList(head);
}

আউটপুট

আপনি যদি উপরের প্রোগ্রামটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

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

উপসংহার

টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।


  1. C++ এ সার্কুলার লিঙ্কড লিস্টের নোডের সমষ্টি

  2. পাইথন প্রোগ্রামটি দ্বিগুণ লিঙ্কযুক্ত তালিকার মাঝখানে থেকে একটি নতুন নোড মুছে ফেলতে পারে

  3. পাইথন প্রোগ্রামটি দ্বিগুণ লিঙ্কযুক্ত তালিকার শেষ থেকে একটি নতুন নোড মুছে ফেলতে পারে

  4. পাইথন প্রোগ্রাম একটি নতুন নোড মুছে ফেলার শুরু থেকে দ্বিগুণ লিঙ্ক করা তালিকা