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

अब, आइए समस्या पर वापस आते हैं। यहां, हम लिंक्ड सूची के वैकल्पिक नोड्स को जोड़ेंगे। इसका मतलब है हम स्थिति 0, 2, 4, 6, ... पर नोड्स जोड़ेंगे।
आइए एक उदाहरण लेकर समस्या को समझते हैं,
इनपुट
4 -> 12 -> 10 -> 76 -> 9 -> 26 -> 1
आउटपुट
24
व्याख्या
वैकल्पिक स्ट्रिंग्स पर विचार करते हुए - 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 << "वैकल्पिक नोड्स का योग है " << sumAlternateNodeIt(head);
return 0;
}
आउटपुट
वैकल्पिक नोड्स का योग है 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 << "वैकल्पिक नोड्स का योग है " << sum;
return 0;
}
आउटपुट
वैकल्पिक नोड्स का योग है 24