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

Tìm tích của k nút đầu tiên của Danh sách được liên kết đã cho trong C ++

Hãy xem xét chúng ta có ít phần tử trong một danh sách được liên kết. Chúng ta phải tìm kết quả nhân của k số phần tử đầu tiên. Giá trị của k cũng được cho trước. Vì vậy, nếu danh sách giống như [5, 7, 3, 5, 6, 9] và k =3, thì kết quả sẽ là 5 * 7 * 3 =105.

Các quy trình là thẳng về phía trước. Chúng tôi chỉ cần đọc phần tử hiện tại bắt đầu từ phía bên trái, sau đó nhân nó với sản phẩm. (sản lượng ban đầu là 1), khi k số phần tử được duyệt qua thì dừng lại.

Ví dụ

#include<iostream>
#include<cmath>
using namespace std;
   class Node{
      public:
         int data;
         Node *next;
   };
   Node* getNode(int data){
      Node *newNode = new Node;
      newNode->data = data;
      newNode->next = NULL;
      return newNode;
   }
   void append(struct Node** start, int key) {
      Node* new_node = getNode(key);
      Node *p = (*start);
      if(p == NULL){
         (*start) = new_node;
         return;
   }
   while(p->next != NULL){
      p = p->next;
   }
   p->next = new_node;
}
long long prodFirstKElements(Node *start, int k) {
   long long res = 1;
   int count = 0;
   Node* temp = start;
   while (temp != NULL && count != k) {
      res *= temp->data;
      count++;
      temp = temp->next;
   }
   return res;
   }
int main() {
   Node *start = NULL;
   int arr[] = {5, 7, 3, 5, 6, 9};
   int n = sizeof(arr)/sizeof(arr[0]);
   int k = 3;
   for(int i = 0; i<n; i++){
   append(&start, arr[i]);
}
cout << "Product of first k elements: " << prodFirstKElements(start, k);
}

Đầu ra

Product of first k elements: 105