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

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


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

हमें केवल लिंक की गई सूची के सभी नोड मानों को जोड़ने की आवश्यकता है।

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

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

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

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

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

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

इनपुट

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

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

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

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

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

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

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