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

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

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

उदाहरण के लिए

मान लीजिए हमारे पास एक लिंक्ड लिस्ट है: 2 → 27 → 32 → 1 → 5
sum = 2 + 27 + 32 + 1 + 5 = 67

यह दो विधियों से किया जा सकता है:

विधि 1 - एक लूप का उपयोग करके जो लिंक्ड लिस्ट के सभी मानों पर पुनरावृति करता है और योग ज्ञात करता है।

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

उदाहरण (विधि 1)

#include <iostream>
using namespace std;

struct Node {
    int data;
    struct Node* next;
};

void push(struct Node** headRef, int nodeVal) {
    struct Node* newNode = new Node;
    newNode->data = nodeVal;
    newNode->next = (*headRef);
    (*headRef) = newNode;
}

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 - एक रिकर्सिव फंक्शन का उपयोग करके जो तब तक खुद को कॉल करता है जब तक लिंक्ड लिस्ट में तत्व हैं। रिकर्सिव फंक्शन बार-बार खुद को कॉल करता है। रिकर्सिव फंक्शन को कॉल करने पर अगले नोड का मान पैरामीटर के रूप में योग के एड्रेस लोकेशन के साथ भेजा जाता है।

उदाहरण (विधि 2)

#include <bits/stdc++.h>
using namespace std;

struct Node {
    int data;
    struct Node* next;
};

void push(struct Node** headRef, int newData) {
    struct Node* newNode = new Node;
    newNode->data = newData;
    newNode->next = (*headRef);
    (*headRef) = newNode;
}

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. सबसे गहरे नोड्स के योग का प्रोग्राम C++ में सबसे गहरे नोड्स के योग का प्रोग्राम C++ में

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इसके सबसे गहरे पत्तों के मानों का योग ढूंढना है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक मैप m और maxDepth परिभाषित करें एक रिकर्सिव विधि solve() परिभाषित करें, यह नोड और लेवल लेगी, प्रारंभ में लेवल 0 है यदि नोड मौजूद नहीं है, तो लौटें maxDept

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

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

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

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