কম্পিউটার

C++ এ এককভাবে সার্কুলার লিঙ্কড তালিকায় সর্বনিম্ন এবং সর্বোচ্চ উপাদান খুঁজুন


এখানে আমরা দেখব কিভাবে একটি একক বৃত্তাকার লিঙ্কযুক্ত লিনিয়ার তালিকা থেকে সর্বনিম্ন এবং সর্বোচ্চ মান পাওয়া যায়। মৌলিক ধারণা খুবই সহজ। শেষ নোডের পরবর্তী অংশটি প্রথম নোডের দিকে নির্দেশ করা হবে, প্রথম নোডটিও স্টার্ট পয়েন্টার ব্যবহার করে পয়েন্ট করা হবে। যখন আমরা তালিকায় কিছু উপাদান সন্নিবেশ করি, নতুন সন্নিবেশিত নোডের পরবর্তী অংশ সন্নিবেশ করার পরে স্টার্ট নোডের ঠিকানা সহ আপডেট করা হবে।

প্রাথমিকভাবে ন্যূনতমকে ধনাত্মক অসীমতার সাথে বরাদ্দ করা হয়, এবং সর্বাধিককে ঋণাত্মক অসীমতার সাথে বরাদ্দ করা হয়। এখন তালিকাটি বাম থেকে ডানে অতিক্রম করুন। যদি বর্তমান উপাদানটি মিন এলিমেন্টের চেয়ে কম হয়, তাহলে মিন আপডেট করুন, যদি বর্তমান উপাদানটি সর্বোচ্চ উপাদানের চেয়ে বড় হয়, তাহলে সর্বোচ্চটি আপডেট করুন। এইভাবে আমরা সর্বনিম্ন এবং সর্বোচ্চ মান পেতে পারি।

উদাহরণ

#include<iostream>
using namespace std;
class Node{
   public:
   int data;
   Node *next;
};
Node* getNode(int key){
   Node *newNode = new Node();
   newNode->data = key;
   newNode->next = NULL;
   return newNode;
}
void insert(Node **start, int data){
   Node *current = *start;
   Node *newNode = getNode(data);
   if(*start == NULL){
      newNode->next = newNode;
      *start = newNode;
      return;
   }
   while (current->next != *start) {
      current = current->next;
   }
   newNode->next = *start;
   current->next = newNode;
}
void displayList(Node *start){
   Node* current = start;
   if (start == NULL) {
      cout << "Display List is empty";
      return;
   } else {
      do {
         cout << current->data << " ";
         current = current->next;
      }
       while (current != start);
   }
   cout << endl;
}
void getMinMax(Node **start){
   if(*start == NULL){
      return;
   }
   Node* current;
   current = *start;
   int min = INT_MAX, max = INT_MIN;
   while (current->next != *start) {
      if (current->data < min) {
         min = current->data;
      }
      if (current->data > max) {
         max = current->data;
      }
      current = current->next;
   }
   cout << "Minimum: " << min << ", Maximum: " << max;
}
int main() {
   int data[] = {99, 11, 22, 10, 44, 55, 66};
   int n = sizeof(data)/sizeof(data[0]);
   Node *start = NULL;
   for(int i = 0; i<n; i++){
      insert(&start, data[i]);
   }
   displayList(start);
   getMinMax(&start);
}

আউটপুট

99 11 22 10 44 55 66
Minimum: 10, Maximum: 99

  1. একটি লিঙ্ক করা তালিকার সর্বাধিক এবং সর্বনিম্ন উপাদান যা C++ এ একটি প্রদত্ত সংখ্যা k দ্বারা বিভাজ্য

  2. C++ এ সর্বাধিক এবং সর্বনিম্ন পণ্য উপসেট

  3. C++ এ লিঙ্ক করা তালিকায় ন্যূনতম ফ্রিকোয়েন্সি উপাদান গণনা করুন

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