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

C++ में लिंक की गई सूची में सम और विषम नोड्स का योग ज्ञात करें

इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची में सम और विषम नोड्स का योग ज्ञात करना है

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

Input : linked list : 3 -> 2 -> 5 -> 7 -> 1 -> 9
Output : evenSum = 2 ; oddSum = 25

स्पष्टीकरण -

evenSum = 2
oddSum = 3 + 5 + 7 + 1 + 9 = 25

समाधान दृष्टिकोण

समस्या को हल करने का एक आसान तरीका लिंक की गई सूची को पार करना और सम या विषम मानों की जांच करना और उन्हें उनके संबंधित योग मान में जोड़ना है।

एल्गोरिदम

  • चरण 1 - लिंक की गई सूची को पार करें।

    • चरण 1.1 - यदि वर्तमान नोड का मान सम है, तो इसे सम में जोड़ें।

    • चरण 1.2 - यदि वर्तमान नोड का मान विषम है, तो इसे विषम राशि में जोड़ें।

  • चरण 2 - विषम राशि और सम राशि लौटाएं।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;
struct Node {
   int data;
   Node* next;
};
void insertNode(Node** root, int item) {
   Node *ptr = *root, *temp = new Node;
   temp->data = item;
   temp->next = NULL;
   if (*root == NULL) 
      *root = temp;
   else {
      while (ptr->next != NULL)
         ptr = ptr->next;
      ptr->next = temp;
   }
}
bool isEven(int a){
   return (a % 2);
}
void findEvenAndOddSum(Node* root) {
   int oddSum = 0, evenSum = 0;
   Node* node = root;
   while (node != NULL) {
      if (isEven(node->data))
         evenSum += node->data;
      else 
         oddSum += node->data;
      node = node->next;
   }
   cout<<"Sum of nodes with even value is "<<evenSum<<endl;
   cout<<"Sum of nodes with odd value is "<<oddSum;
}
int main() {
   Node* root = NULL;
   insertNode(&root, 3);
   insertNode(&root, 2);
   insertNode(&root, 5);
   insertNode(&root, 7);
   insertNode(&root, 1);
   insertNode(&root, 9);
   insertNode(&root, 6);
   findEvenAndOddSum(root);
   return 0;
}

आउटपुट

Sum of nodes with even value is 25
Sum of nodes with odd value is 8

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

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

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

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

  1. C++ में बाइनरी ट्री में लिंक की गई सूची

    मान लीजिए कि हमारे पास एक बाइनरी ट्री रूट है और पहले नोड के रूप में एक सिर के साथ एक लिंक्ड सूची है। हमें ट्रू वापस करना होगा यदि लिंक की गई सूची में सिर से शुरू होने वाले सभी तत्व बाइनरी ट्री में जुड़े कुछ डाउनवर्ड पथ से मेल खाते हैं अन्यथा गलत। तो अगर पेड़ जैसा है - और लिंक की गई सूची [1,4,2,6]