একটি সিঙ্গলি লিঙ্কড লিস্ট এবং একটি সংখ্যা k দেওয়া আছে। লিস্টের দৈর্ঘ্য n হলে (n/k)-তম নোড বের করতে হবে (সিলিং ভ্যালু নেওয়া হয়)। উদাহরণ: লিস্ট 1,2,3,4,5,6 এবং k=2 হলে n/k = 3, তাই ৩রা নোড (মান ৩) আউটপুট।
দুটি পয়েন্টার (temp, fracPoint) ব্যবহার করুন। temp প্রতি k-স্টেপে fracPoint এক_STEP সরান।
উদাহরণ
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
};
Node* getNode(int data) {
Node* n = new Node;
n->data = data; n->next = NULL;
return n;
}
Node* fractionalNodes(Node* start, int k) {
if (k <= 0 || !start) return NULL;
Node* fracPoint = NULL;
int i = 0;
for (Node* temp = start; temp; temp = temp->next) {
if (i % k == 0) {
if (!fracPoint) fracPoint = start;
else fracPoint = fracPoint->next;
}
i++;
}
return fracPoint;
}
int main() {
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;
Node* ans = fractionalNodes(start, k);
cout << "Fractional node is " << ans->data;
return 0;
}
আউটপুট
Fractional node is 3