Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm tổng các nút chẵn và lẻ trong danh sách được liên kết trong C ++

Trong vấn đề này, chúng tôi được cung cấp một danh sách liên kết. Nhiệm vụ của chúng tôi là tìm tổng các nút chẵn và lẻ trong danh sách được liên kết .

Hãy lấy một ví dụ để hiểu vấn đề,

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

Giải thích -

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

Phương pháp tiếp cận giải pháp

Một cách tiếp cận đơn giản để giải quyết vấn đề là duyệt qua danh sách được liên kết và kiểm tra các giá trị chẵn hoặc lẻ và thêm chúng vào giá trị tổng tương ứng của chúng.

Thuật toán

  • Bước 1 - Duyệt qua danh sách được liên kết.

    • Bước 1.1 - Nếu giá trị của nút hiện tại là chẵn, hãy thêm nó vào EvenSum.

    • Bước 1.2 - Nếu giá trị của nút hiện tại là lẻ, hãy thêm nó vào EvenSum.

  • Bước 2 - Trả về số lẻ và tổng số chẵn.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

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