用 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 − 如果當前節點的值是偶數,則將其新增到 evenSum。

    • 步驟 1.2 − 如果當前節點的值是奇數,則將其新增到 oddSum。

  • 步驟 2 − 返回 oddSum 和 evenSum。

示例

說明我們解決方案工作原理的程式

#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

更新於: 2022-1-27

745 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.