इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची के वैकल्पिक नोड्स के योग को प्रिंट करना है।
लिंक्ड सूची डेटा संरचना का एक क्रम है जो लिंक के माध्यम से एक साथ जुड़े होते हैं।
अब, समस्या पर वापस आते हैं। यहां, हम लिंक की गई सूची के वैकल्पिक नोड्स जोड़ेंगे। इसका मतलब है कि हम नोड जोड़ेंगे 0, 2, 4, 6, …
positionsसमस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
4 → 12 → 10 → 76 → 9 → 26 → 1
आउटपुट
24
स्पष्टीकरण
considering alternate strings − 4 + 10 + 9 + 1 = 24
इस समस्या को हल करने के लिए, हम प्रत्येक नोड को एक-एक करके और प्रत्येक नेस्ट नोड के लिए देखेंगे। हम योग में मूल्य जोड़ देंगे। नोड्स पर नज़र रखने के लिए, हम एक ध्वज का उपयोग करेंगे।
यह पुनरावृत्ति या रिकर्सन का उपयोग करके किया जा सकता है। हम यहां दोनों पर चर्चा करेंगे,
उदाहरण
पुनरावर्ती दृष्टिकोण
#include <iostream> using namespace std; struct Node { int data; struct Node* next; }; void pushNode(struct Node** head_ref, int newData) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = newData; newNode->next = (*head_ref); (*head_ref) = newNode; } int sumAlternateNodeIt(struct Node* head) { bool flag = true; int sum = 0; while (head != NULL){ if (flag) sum += head->data; flag = !flag; head = head->next; } return sum; } int main(){ struct Node* head = NULL; pushNode(&head, 54); pushNode(&head, 12); pushNode(&head, 87); pushNode(&head, 1); pushNode(&head, 99); pushNode(&head, 11); cout<<"The sum of alternate nodes is "<<sumAlternateNodeIt(head); return 0; }
आउटपुट
The sum of alternate nodes is 24
उदाहरण
पुनरावर्ती दृष्टिकोण
#include <iostream> using namespace std; struct Node { int data; struct Node* next; }; void pushNode(struct Node** head_ref, int new_data){ struct Node* new_node = (struct Node*)malloc(sizeof(struct Node)); new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } void sumAlternateNodeRec(struct Node* node, int& sum, bool flag = true){ if (node == NULL) return; if (flag == true) sum += (node->data); sumAlternateNodeRec(node->next, sum, !flag); } int main(){ struct Node* head = NULL; pushNode(&head, 54); pushNode(&head, 12); pushNode(&head, 87); pushNode(&head, 1); pushNode(&head, 99); pushNode(&head, 11); int sum = 0; sumAlternateNodeRec(head, sum, true); cout<<"The sum of alternate nodes is "<<sum; return 0; }
आउटपुट
The sum of alternate nodes is 24