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

Sản phẩm của tất cả các nút chính trong Danh sách được liên kết đơn lẻ trong C ++

Cho trước với n nút và nhiệm vụ là in tích của tất cả các nút nguyên tố trong một danh sách liên kết. Các nút chính là những nút sẽ có giá trị chính làm vị trí đếm của chúng.

Đầu vào

10 20 30 40 50

Đầu ra

4,00,000

Giải thích - 10 ở giá trị chỉ số 1 không phải là số nguyên tố nên nó sẽ bị bỏ qua. Di chuyển đến 20 với giá trị chỉ số 2 là một số nguyên tố nên nó sẽ được xem xét. Tương tự, 40 và 50 ở các vị trí chỉ mục chính.

Sản phẩm - 20 * 40 * 50 =4,00,000

Sản phẩm của tất cả các nút chính trong Danh sách được liên kết đơn lẻ trong C ++

Trong sơ đồ trên, các nút màu đỏ đại diện cho các nút chính

Phương pháp tiếp cận được sử dụng bên dưới như sau

  • Lấy một con trỏ tạm thời, giả sử, nút tạm thời của loại nút

  • Đặt con trỏ tạm thời này thành nút đầu tiên được trỏ bởi con trỏ đầu

  • Di chuyển tạm thời sang tạm thời → tiếp theo và kiểm tra xem nút đó là nút chính hay nút không nguyên tố. Nếu nút là nút chính

  • NÊN đặt product =product * (tạm thời → dữ liệu)

  • Nếu nút không phải là nút chính, hãy chuyển sang nút tiếp theo

  • In giá trị cuối cùng của biến sản phẩm.

Thuật toán

Start
Step 1 → create structure of a node to insert into a list
   struct node
      int data;
      node* next
   End
Step 2 → declare function to insert a node in a list
   void push(node** head_ref, int data)
      Set node* newnode = (node*)malloc(sizeof(struct node))
      Set newnode→data = data
      Set newnode→next = (*head_ref)
      Set (*head_ref) = newnode
   End
Step 3 → Declare a function to check for prime or not
   bool isPrime(int data)
      IF data <= 1
         return false
      End
      IF data <= 3
         return true
      End
      IF data % 2 = 0 || data % 3 = 0
         return false
      Loop For int i = 5 and i * i <= data and i = i + 6
         IFdata % i = 0 || data % (i + 2) = 0
            return false
         End
      End
      return true
Step 4→ declare a function to calculate product
   void product(node* head_ref)
      set int product = 1
      set node* ptr = head_ref
      While ptr != NULL
         IF (isPrime(ptr→data))
            Set product *= ptr→data
         End
         Set ptr = ptr→next
      End
      Print product
Step 5 → In main()
   Declare node* head = NULL
   Call push(&head, 10)
   Call push(&head, 2)
   Call product(head)
Stop

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//structure of a node
struct node{
   int data;
   node* next;
};
//function to insert a node
void push(node** head_ref, int data){
   node* newnode = (node*)malloc(sizeof(struct node));
   newnode→data = data;
   newnode→next = (*head_ref);
   (*head_ref) = newnode;
}
// Function to check if a number is prime
bool isPrime(int data){
   if (data <= 1)
      return false;
   if (data <= 3)
      return true;
   if (data % 2 == 0 || data % 3 == 0)
      return false;
   for (int i = 5; i * i <= data; i = i + 6)
      if (data % i == 0 || data % (i + 2) == 0)
         return false;
   return true;
}
//function to find the product
void product(node* head_ref){
   int product = 1;
   node* ptr = head_ref;
   while (ptr != NULL){
      if (isPrime(ptr→data)){
         product *= ptr→data;
      }
      ptr = ptr→next;
   }
   cout << "Product of all the prime nodes of a linked list = " << product;
}
int main(){
   node* head = NULL;
   push(&head, 10);
   push(&head, 2);
   push(&head, 7);
   push(&head, 6);
   push(&head, 85);
   product(head);
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Product of all the prime nodes of a linked list = 14