Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम में सिंगल लिंक्ड लिस्ट के नोड्स का योग

सिंगल लिंक्ड लिस्ट एक डेटा संरचना है जिसमें एक तत्व के दो भाग होते हैं, एक मान होता है और दूसरा अगले तत्व की कड़ी होता है। इसलिए सिंगल लिंक्ड लिस्ट के सभी एलिमेंट्स का योग निकालने के लिए, हमें लिंक्ड लिस्ट के प्रत्येक नोड पर नेविगेट करना होगा और एलिमेंट के वैल्यू को सम वेरिएबल में जोड़ना होगा।

उदाहरण के लिए

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

  1. सी ++ में सबसे गहरे नोड्स का योग खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इसकी सबसे गहरी पत्तियों के मूल्यों का योग ज्ञात करना होगा। तो अगर पेड़ जैसा है - तब आउटपुट 11 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - मानचित्र m, और maxDepth . को परिभाषित करें एक पुनरावर्ती विधि हल करें () को परिभाषित करें, यह नोड

  1. C++ में सर्कुलर लिंक्ड लिस्ट के नोड्स का योग

    इस समस्या में, हमें एक वृत्ताकार लिंक्ड सूची दी गई है। हमारा काम सर्कुलर लिंक्ड लिस्ट के नोड्स के योग को खोजने के लिए एक प्रोग्राम बनाना है। हमें केवल लिंक की गई सूची के सभी नोड मानों को जोड़ने की आवश्यकता है। कुछ महत्वपूर्ण परिभाषाएं लिंक्ड लिस्ट डेटा संरचनाओं का एक क्रम है, जो लिंक के माध्य

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची के वैकल्पिक नोड्स के योग को प्रिंट करना है। लिंक्ड सूची डेटा संरचना का एक क्रम है जो लिंक के माध्यम से एक साथ जुड़े होते हैं। अब, समस्या पर वापस आते हैं। यहां, हम लिंक की गई सूची के वैकल्पिक नोड्स जोड़ेंगे। इसका मतलब है कि ह