ধরুন আমাদের একটি এককভাবে লিঙ্ক করা তালিকা আছে এবং সংখ্যাটি 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