কম্পিউটার

C++ এ সার্কুলার লিঙ্ক তালিকায় নোড গণনা করুন


আমাদেরকে নোডগুলির সাথে একটি সার্কুলার লিঙ্ক করা তালিকা দেওয়া হয়েছে এবং কাজটি হল একটি বৃত্তাকার লিঙ্কযুক্ত তালিকায় উপস্থিত নোডের সংখ্যা গণনা করা৷

সার্কুলার লিঙ্কড লিস্ট হল লিঙ্কড লিস্টের একটি বৈচিত্র যেখানে প্রথম এলিমেন্টটি শেষ এলিমেন্টের দিকে নির্দেশ করে এবং শেষ এলিমেন্টটি প্রথম এলিমেন্টের দিকে নির্দেশ করে। সিঙ্গলি লিঙ্কড লিস্ট এবং ডাবললি লিংকড লিস্ট উভয়ই একটি সার্কুলার লিঙ্কড লিস্টে তৈরি করা যেতে পারে।

নীচের প্রোগ্রামে, আমরা নোডের সংখ্যা গণনা করার জন্য একটি সার্কুলার লিঙ্কযুক্ত তালিকা হিসাবে একটি এককভাবে লিঙ্কযুক্ত তালিকা প্রয়োগ করছি৷

C++ এ সার্কুলার লিঙ্ক তালিকায় নোড গণনা করুন

উদাহরণস্বরূপ

Input − nodes-: 20, 1, 2, 3, 4, 5
Output − count of nodes are-: 6
Input − nodes-: 20, 1, 2, 3, 4, 5, 7, 8, 9, 12
Output − count of nodes are-: 10

নীচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ -

  • নোড দ্বারা ধারণ করা ঠিকানা এবং ডেটা সহ একটি এককভাবে লিঙ্ক করা তালিকার জন্য কাঠামো তৈরি করুন।

  • একটি পুশ() ফাংশন তৈরি করুন যা নোডে ডেটা সন্নিবেশ করতে ব্যবহৃত হবে।

  • শেষ নোডে, প্রথম নোডের ঠিকানাটি একটি বৃত্তাকার লিঙ্কযুক্ত তালিকা হিসাবে এককভাবে লিঙ্কযুক্ত তালিকা ফাংশন তৈরি করতে সংরক্ষণ করুন৷

  • একটি গণনা ফাংশন তৈরি করুন যা একটি বৃত্তাকার লিঙ্কযুক্ত তালিকায় উপস্থিত নোডের মোট সংখ্যা গণনা করবে।

উদাহরণ

#include <stdio.h>
#include <stdlib.h>
/* Defining a node */
struct node {
   int data;
   struct node* next;
};
// Inserting node in Circular list
void push(struct node** head_ref, int data){
   struct node* ptr1 = (struct node*)malloc(sizeof(struct node));
   struct node* temp = *head_ref;
   ptr1->data = data;
   ptr1->next = *head_ref;
   // going to the last node to insert new element.
   if (*head_ref != NULL){
      while (temp->next != *head_ref){
         temp = temp->next;
      }
      temp->next = ptr1;
   } else{
      ptr1->next = ptr1; //for first node
   }
   *head_ref = ptr1;
}
// Function to count the number of nodes
int count_fun(struct node* head){
   struct node* temp = head;
   int result = 0;
   if (head != NULL){
      do {
         temp = temp->next;
         result++;
      } while (temp != head);
   }
   return result;
}
int main(){
   /* Initializing the list as empty */
   struct node* head = NULL;
   push(&head, 10);
   push(&head, 20);
   push(&head, 30);
   push(&head, 40);
   printf("count of nodes are: %d", count_fun(head));
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
count of nodes are: 4

  1. C++ এ একটি লিঙ্কযুক্ত তালিকা সমতল করা

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

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

  4. C++ এ সম্পূর্ণ ট্রি নোড গণনা করুন