কম্পিউটার

C++ এ লিঙ্ক করা তালিকায় ভগ্নাংশ (বা n/k – থ) নোড খুঁজুন


ধরুন আমাদের একটি এককভাবে লিঙ্ক করা তালিকা আছে এবং সংখ্যাটি k। (n/k)তম উপাদান খুঁজে বের করার জন্য আমাদের একটি ফাংশন লিখতে হবে, যেখানে n হল তালিকার উপাদানের সংখ্যা। দশমিকের জন্য, আমরা সিলিং মান নির্বাচন করব। তাই যদি তালিকাটি 1, 2, 3, 4, 5, 6, এবং k =2 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন n =6 এবং k =2, তাহলে আমরা n/k তম নোড প্রিন্ট করব তাই 6/ 2ম নোড =3য় নোড যা 3।

এটি সমাধান করতে আমাদের নিচের মত কিছু ধাপ অনুসরণ করতে হবে -

  • টেম্প এবং ফ্র্যাকপয়েন্ট নামক দুটি পয়েন্টার নিন, তারপর যথাক্রমে নাল দিয়ে শুরু করুন এবং শুরু করুন।
  • প্রতি k, টেম্প পয়েন্টারের লাফের জন্য, ফ্র্যাকপয়েন্ট পয়েন্টারের একটি লাফ দিন।

উদাহরণ

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
      Node* next;
};
Node* getNode(int data) {
   Node* new_node = new Node;
   new_node->data = data;
   new_node->next = NULL;
   return new_node;
}
Node* fractionalNodes(Node* start, int k) {
   if (k <= 0 || start == NULL)
      return NULL;
   Node* fracPoint = NULL;
   int i = 0;
   for (Node* temp = start; temp != NULL; temp = temp->next) {
      if (i % k == 0) {
         if (fracPoint == NULL)
            fracPoint = start;
         else
            fracPoint = fracPoint->next;
      }
      i++;
   }
   return fracPoint;
}
void printList(Node* node) {
   while (node != NULL) {
      cout << node->data << " ";
      node = node->next;
   }
   cout << endl;
}
int main(void) {
   Node* start = getNode(1);
   start->next = getNode(2);
   start->next->next = getNode(3);
   start->next->next->next = getNode(4);
   start->next->next->next->next = getNode(5);
   int k = 2;
   cout << "List is: ";
   printList(start);
   Node* answer = fractionalNodes(start, k);
   cout << "\nFractional node is " << answer->data;
}

আউটপুট

List is: 1 2 3 4 5
Fractional node is 3

  1. C++ এ বহুস্তরের লিঙ্কযুক্ত তালিকা সমতল করুন

  2. C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকায় বৃহত্তম নোড খুঁজুন

  3. C++ এ একটি বাইনারি ট্রিতে গভীরতম নোড খুঁজুন

  4. একটি লিঙ্ক করা তালিকা C++ এ সার্কুলার লিঙ্কড তালিকা কিনা তা পরীক্ষা করুন