কম্পিউটার টিউটোরিয়াল

সি++ প্রোগ্রাম: সিঙ্গলি লিংকড লিস্টের মধ্যবিন্দু রিকারসিভলি (Recursively) নির্ণয়


একটি সংখ্যaların লিস্ট দেওয়া থাকলে, রিকারশন (recursion) ব্যবহার করে লিংকড লিস্টের মধ্যবিন্দু বের করতে হবে। লিস্টের উপাদান [12, 14, 18, 36, 96, 25, 62] হলে, মধ্যবিন্দু ৩৬।

সমাধান: রিকারসিভভাবে মোট নোড গণনা করে তার অর্ধেক বের করা। তারপর রিকারশন থেকে ফেরত আসার সময় n কে ১ করে কমিয়ে যাওয়া, যেখানে n শূন্য হবে সেটি ফেরত দেয়া।

উদাহরণ

#include<iostream> #include<stack> using namespace std; class Node{    public:       int data;       Node *next; }; Node* getNode(int data){    Node *newNode = new Node;    newNode->data = data;    newNode->next = NULL;       return newNode; } void midpoint_task(Node* head, int* n, Node** mid){    if (head == NULL) {       *n /= 2;       return;    }    *n += 1;    midpoint_task(head->next, n, mid);    *n -= 1;    if (*n == 0) {       *mid = head;    } } Node* findMidpoint(Node* head) {    Node* mid = NULL;    int n = 1;    midpoint_task(head, &n, &mid);    return mid; } void append(struct Node** start, int key) {    Node* new_node = getNode(key);    Node *p = (*start);    if(p == NULL){       (*start) = new_node;       return;    }    while(p->next != NULL){       p = p->next;    }    p->next = new_node; } int main() {    Node *start = NULL;    int arr[] = {12, 14, 18, 36, 96, 25, 62};    int size = sizeof(arr)/sizeof(arr[0]);    for(int i = 0; idata; }

আউটপুট

Mid point is: 36

  1. Android-এ লিংকড লিস্টের মাঝপথের এলিমেন্ট বের করার পদ্ধতি

  2. লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  3. C++-এ লিংকড লিস্টে লুপের দৈর্ঘ্য বের করুন

  4. C++-এ ডাবলি লিংকড লিস্টের আকার (Size) বের করার প্রোগ্রাম