পূর্ণসংখ্যা মান দিয়ে একটি লিঙ্কড লিস্ট তৈরি করা হবে। কাজ হলো রিকারসিভ পদ্ধতিতে নোড ইনসার্ট করা এবং ট্রাভার্স করা।
রিকারসিভভাবে নোড যোগ করা (শেষে)
যদি হেড NULL হয় → হেডে নোড যোগ করুন।
অন্যথায়
addtoEnd(head->next, data)কল করুন।
রিকারসিভভাবে নোড ট্রাভার্স করা
যদি হেড NULL হয় → প্রিন্ট "NULL" এবং ফেরত যান।
অন্যথায় ডেটা প্রিন্ট করে
traverseList(head->next)কল করুন।
উদাহরণ
ইনপুট − 1 - 2 - 7 - 9 - 10
আউটপুট − লিঙ্কড লিস্ট: 1 → 2 → 7 → 9 → 10 → NULL
ইনপুট − 12 - 21 - 17 - 94 - 18
আউটপুট − লিঙ্কড লিস্ট: 12 → 21 → 17 → 94 → 18 → NULL
প্রোগ্রামে ব্যবহৃত পদ্ধতি
নোড যোগ ও ট্রাভার্সালের জন্য রিকারসিভ ফাংশন ব্যবহার করা হয়েছে।
SLLNodeস্ট্রাকচার:int dataওSLLNode* next।addtoEnd(SLLNode* head, int data)ফাংশন হেড পয়েন্টার ও ডেটা নিয়ে লিস্টের শেষে নোড যোগ করে।যদি হেড NULL হয়, নতুন নোড তৈরি করে হেড হিসেবে ফেরত দিন।
অন্যথায়
head->next = addtoEnd(head->next, data)করে রিকারসিভ কল দিন।traverseList(SLLNode* head)ফাংশন হেড থেকে শুরু করে প্রতিটি মান প্রিন্ট করে।যদি হেড NULL হয়, "NULL" প্রিন্ট করে ফেরত যান।
অন্যথায় ডেটা প্রিন্ট করে
traverseList(head->next)কল করুন।main-এaddtoEnd()দিয়ে লিস্ট তৈরি করেtraverseList()দিয়ে প্রিন্ট করুন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
struct SLLNode {
int data;
SLLNode* next;
};
SLLNode* addtoEnd(SLLNode* head, int data){
if (head == NULL){
SLLNode *nodex = new SLLNode;
nodex->data = data;
nodex->next = NULL;
return nodex;
}
else{
head->next = addtoEnd(head->next, data);
}
return head;
}
void traverseList(SLLNode* head){
if (head == NULL){
cout << "NULL";
return;
}
cout << head->data << " -> ";
traverseList(head->next);
}
int main(){
SLLNode* head1 = NULL;
head1 = addtoEnd(head1, 1);
head1 = addtoEnd(head1, 8);
head1 = addtoEnd(head1, 56);
head1 = addtoEnd(head1, 12);
head1 = addtoEnd(head1, 34);
cout << "Linked List is :" << endl;
traverseList(head1);
return 0;
}
আউটপুট
উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:
Linked List is : 1 -> 8 -> 56 -> 12 -> 34 -> NULL