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

Sản phẩm của các nút của một danh sách được liên kết đơn lẻ

Với n nút, nhiệm vụ là in ra sản phẩm của tất cả các nút của một danh sách được liên kết đơn lẻ. Chương trình phải duyệt qua tất cả các nút của một danh sách được liên kết đơn lẻ bắt đầu từ nút ban đầu cho đến khi không tìm thấy NULL.

Ví dụ

Input -: 1 2 3 4 5
Output -: 120

Trong ví dụ trên, bắt đầu từ nút đầu tiên, tất cả các nút được duyệt qua, tức là 1, 2 3, 4, 5, 6 và tích của chúng là 1 * 2 * 3 * 4 * 5 * 6 =120

Sản phẩm của các nút của một danh sách được liên kết đơn lẻ

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, chẳng hạn, 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ỏ head
  • Chuyển nhiệt độ sang tạm thời -> tiếp theo trong khi nhiệt độ không NULL.
  • Đặt product =product * (temp-> data)

Thuật toán

Start
Step 1 -> create structure of a node and temp, next and head as pointer to a structure node
   struct node
      int data
      struct node *next, *head, *temp
   End
Step 2 -> declare function to insert a node in a list
   void insert(int val)
      struct node* newnode = (struct node*)malloc(sizeof(struct node))
      newnode->data = val
      IF head= NULL
         set head = newnode
         set head->next = NULL
      End
      Else
         Set temp=head
         Loop While temp->next!=NULL
         Set temp=temp->next
      End
      Set newnode->next=NULL
      Set temp->next=newnode
   End
Step 3 -> Declare a function to display list
   void display()
      IF head=NULL
         Print no node
      End
      Else
         Set temp=head
         Loop While temp!=NULL
            Print temp->data
            Set temp=temp->next
         End
      End
Step 4 -> declare a function to find alternate nodes
   void product_nodes()
      declare int product=1
      Set temp=head
   Loop While temp!=NULL
      Set product=product * (temp->data)
      Set temp=temp->next
   End
   Print product
Step 5 -> in main()
   Create nodes using struct node* head = NULL;
   Call function insert(10) to insert a node
   Call display() to display the list
   Call product_nodes() to find alternate nodes product
Stop

Ví dụ

#include<stdio.h>
#include<stdlib.h>
//structure of a node
struct node{
   int data;
   struct node *next;
}*head,*temp;
//function for inserting nodes into a list
void insert(int val){
   struct node* newnode = (struct node*)malloc(sizeof(struct node));
   newnode->data = val;
   newnode->next = NULL;
   if(head == NULL){
      head = newnode;
      temp = head;
   } else {
      temp->next=newnode;
      temp=temp->next;
   }
}
//function for displaying a list
void display(){
   if(head==NULL)
      printf("no node ");
   else{
      temp=head;
      while(temp!=NULL){
         printf("%d ",temp->data);
         temp=temp->next;
      }
   }
}
//function for finding product
void product_nodes(){
   int product=1;
   temp=head;
   while(temp!=NULL){
      product=product * (temp->data);
      temp=temp->next;
   }
   printf("\nproduct of nodes is : %d" ,product);
}
int main(){
   //creating list
   struct node* head = NULL;
   //inserting elements into a list
   insert(1);
   insert(2);
   insert(3);
   insert(4);
   insert(5);
   insert(6);
   //displaying the list
   printf("linked list is : ");
   display();
   //calling function for finding prodouct
   Product_nodes();
   return 0;
}

Đầu ra

linked list is : 1 2 3 4 5 6
product of nodes is : 720