इस समस्या में, हमें एक वृत्ताकार लिंक्ड सूची दी गई है। हमारा काम सर्कुलर लिंक्ड लिस्ट के नोड्स के योग को खोजने के लिए एक प्रोग्राम बनाना है।
हमें केवल लिंक की गई सूची के सभी नोड मानों को जोड़ने की आवश्यकता है।
कुछ महत्वपूर्ण परिभाषाएं
-
लिंक्ड लिस्ट डेटा संरचनाओं का एक क्रम है, जो लिंक के माध्यम से एक साथ जुड़े होते हैं।
-
सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व को इंगित करता है और अंतिम तत्व पहले तत्व को इंगित करता है। सिंगल लिंक्ड लिस्ट और डबल लिंक्ड लिस्ट दोनों को सर्कुलर लिंक्ड लिस्ट में बनाया जा सकता है।
अब, समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
14 -> 1 -> 7 -> 9 -> 2 -> 6
आउटपुट
39
स्पष्टीकरण
sum = 14 + 1 + 7 + 9 + 2 + 6 = 39
इस समस्या को हल करने के लिए, हम लिंक की गई सूची को पार करेंगे। और प्रत्येक नोड के मान को एक योग चर में जोड़ें। जब पूरी सूची का पता लगाया जाता है, तब राशि वापस कर दें।
एल्गोरिदम
चरण 1 - इनिशियलाइज़ सम =0 और समपॉइंटर =
चरण 2 - करते समय योग सूचक !=सिर। करो
चरण 2.1 - वर्तमान नोड के मान को योग में जोड़ें, यानी योग +=योग सूचक → मान।
चरण 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