এই সমস্যায়, আমাদের একটি সার্কুলার লিঙ্ক করা তালিকা দেওয়া হয়েছে। আমাদের কাজ হল একটি সার্কুলার লিঙ্ক করা তালিকার নোডগুলির যোগফল খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা।
আমাদের কেবল লিঙ্ক করা তালিকার সমস্ত নোড মান যোগ করতে হবে।
কিছু গুরুত্বপূর্ণ সংজ্ঞা
-
লিঙ্ক করা তালিকা হল ডেটা স্ট্রাকচারের একটি ক্রম, যা লিঙ্কের মাধ্যমে একসাথে সংযুক্ত থাকে।
-
সার্কুলার লিঙ্কড লিস্ট হল লিঙ্ক করা তালিকার একটি বৈচিত্র যেখানে প্রথম উপাদানটি শেষ উপাদানটির দিকে নির্দেশ করে এবং শেষ উপাদানটি প্রথম উপাদানটির দিকে নির্দেশ করে। সিঙ্গলি লিঙ্কড লিস্ট এবং ডাবললি লিংকড লিস্ট উভয়ই একটি সার্কুলার লিঙ্কড লিস্টে তৈরি করা যেতে পারে।
এখন, সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট৷
14 -> 1 -> 7 -> 9 -> 2 -> 6
আউটপুট
39
ব্যাখ্যা
sum = 14 + 1 + 7 + 9 + 2 + 6 = 39
এই সমস্যাটি সমাধান করতে, আমরা লিঙ্কযুক্ত তালিকাটি অতিক্রম করব। এবং প্রতিটি নোডের মান একটি যোগ ভেরিয়েবলে যোগ করুন। তারপর সমষ্টি ফেরত দিন, যখন পুরো তালিকাটি অতিক্রম করা হয়।
অ্যালগরিদম
ধাপ 1 − sum =0 এবং sumPointer =
শুরু করুনধাপ 2 − sumPointer!=head. করুন
ধাপ 2.1৷ − বর্তমান নোডের মান যোগ করুন যোগ করুন, যেমন যোগফল +=sumPointer → মান।
ধাপ 2.2৷ − পরবর্তী নোডে পয়েন্টার বাড়ান, যেমন sumPointer =sumPointer → পরবর্তী।
ধাপ 3 - যোগফল ফেরত দিন।
উদাহরণ
সমাধান চিত্রিত করার জন্য প্রোগ্রাম,
#include <iostream> using namespace std; struct Node { int data; struct Node* next; }; void pushNode(struct Node** head_ref, int data) { struct Node* ptr1 = (struct Node*)malloc(sizeof(struct Node)); struct Node* temp = *head_ref; ptr1->data = data; ptr1->next = *head_ref; if (*head_ref != NULL) { while (temp->next != *head_ref) temp = temp->next; temp->next = ptr1; } else ptr1->next = ptr1; *head_ref = ptr1; } int CalcSumCirList(struct Node* head) { struct Node* sumPointer = head; int sum = 0; if (head != NULL) { do { sumPointer = sumPointer->next; sum += sumPointer->data; } while (sumPointer != head); } return sum; } int main(){ struct Node* head = NULL; pushNode(&head, 4); pushNode(&head, 7); pushNode(&head, 12); pushNode(&head, 1); pushNode(&head, 9); pushNode(&head, 6); cout<<"The sum of Circular linked list is "<<CalcSumCirList(head); return 0; }
আউটপুট
The sum of Circular linked list is 39