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

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


इस समस्या में, हमें एक सर्कुलर लिंक्ड सूची दी गई है। हमारा कार्य एक प्रोग्राम बनाना है जो सर्कुलर लिंक्ड सूची के नोड्स का योग ढूंढे।

हमें बस लिंक्ड सूची के सभी नोड मानों को जोड़ना है।

कुछ महत्वपूर्ण परिभाषाएं

  • लिंक्ड सूची डेटा संरचनाओं का एक क्रम है, जो लिंक्स के माध्यम से एक साथ जुड़े हुए हैं।

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

  • सर्कुलर लिंक्ड सूची लिंक्ड सूची का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व की ओर इशारा करता है और अंतिम तत्व पहले तत्व की ओर इशारा करता है। सिंगली लिंक्ड सूची और डबल लिंक्ड सूची दोनों को सर्कुलर लिंक्ड सूची में बनाया जा सकता है।

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

अब, आइए एक उदाहरण लेकर समस्या को समझते हैं,

इनपुट

14 -> 1 -> 7 -> 9 -> 2 -> 6

आउटपुट

39

व्याख्या

योग = 14 + 1 + 7 + 9 + 2 + 6 = 39

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

एल्गोरिदम

चरण 1 - योग = 0 और sumPointer = head आरंभ करें।

चरण 2 - do-while sumPointer != head करें।

चरण 2.1 - वर्तमान नोड के मान को योग में जोड़ें, यानी sum += sumPointer->data।

चरण 2.2 - अगले नोड पर पॉइंटर बढ़ाएं, यानी sumPointer = sumPointer->next।

चरण 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 << "सर्कुलर लिंक्ड सूची का योग है " << CalcSumCirList(head);
    return 0;
}

आउटपुट

सर्कुलर लिंक्ड सूची का योग है 39

  1. सबसे गहरे नोड्स के योग का प्रोग्राम C++ में सबसे गहरे नोड्स के योग का प्रोग्राम C++ में

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

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

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

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

    हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की संख्या की गणना करना है। सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक प्रकार है जिसमें पहला तत्व अंतिम तत्व की ओर इंगित करता है और अंतिम तत्व पहले तत्व की ओर इंगित करता है। सिंगली लिंक्ड लिस्ट और डबली लिं