सिंगल लिंक्ड लिस्ट एक डेटा संरचना है जिसमें एक तत्व के दो भाग होते हैं, एक मान होता है और दूसरा अगले तत्व की कड़ी होता है। इसलिए सिंगल लिंक्ड लिस्ट के सभी एलिमेंट्स का योग निकालने के लिए, हमें लिंक्ड लिस्ट के प्रत्येक नोड पर नेविगेट करना होगा और एलिमेंट के वैल्यू को सम वेरिएबल में जोड़ना होगा।
उदाहरण के लिए
Suppose we have a linked list: 2 -> 27 -> 32 -> 1 -> 5 sum = 2 + 27 + 32 + 1 + 5 = 67.
यह दो विधियों का उपयोग करके किया जा सकता है:
विधि 1 - एक लूप का उपयोग करना जो लिंक की गई सूची के सभी मानों पर लूप करता है और योग पाता है।
लूप लिंक की गई सूची के अंत तक चलता है यानी जब किसी तत्व का सूचक शून्य की ओर इशारा करता है, तो यह लूप चलेगा और प्रत्येक तत्व के मानों का योग ज्ञात करेगा।
उदाहरण
#include <iostream> using namespace std; struct Node { int data; struct Node* next; }; void push(struct Node** nodeH, int nodeval) { struct Node* new_node = new Node; new_node->data = nodeval; new_node->next = (*nodeH); (*nodeH) = new_node; } int main() { struct Node* head = NULL; int sum = 0; push(&head, 95); push(&head, 60); push(&head, 87); push(&head, 6); push(&head, 12); struct Node* ptr = head; while (ptr != NULL) { sum += ptr->data; ptr = ptr->next; } cout << "Sum of nodes = "<< sum; return 0; }
आउटपुट
Sum of nodes = 260
विधि 2 - एक पुनरावर्ती फ़ंक्शन का उपयोग करना जो स्वयं को तब तक कॉल करता है जब तक कि लिंक की गई सूची में तत्व न हों। रिकर्सिव फंक्शन खुद को बार-बार कॉल करता है। रिकर्सिव फ़ंक्शन को कॉल अगले नोड मान को योग पता स्थान के साथ पैरामीटर के रूप में भेजता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node* next; }; void push(struct Node** head_ref, int new_data) { struct Node* new_node = new Node; new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } void nodesum(struct Node* head, int* sum) { if (!head) return; nodesum(head->next, sum); *sum = *sum + head->data; } int main() { struct Node* head = NULL; int sum= 0; push(&head, 95); push(&head, 60); push(&head, 87); push(&head, 6); push(&head, 12); nodesum(head,&sum); cout << "Sum of nodes = "<<sum; return 0; }
आउटपुट
Sum of nodes = 260