Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ผลิตภัณฑ์ของโหนดของ Singly Linked List


ให้ n โหนด ภารกิจคือการพิมพ์ผลิตภัณฑ์ของโหนดทั้งหมดของรายการที่เชื่อมโยงโดยลำพัง โปรแกรมต้องสำรวจทุกโหนดของรายการที่เชื่อมโยงโดยลำพังโดยเริ่มจากโหนดเริ่มต้นจนถึงไม่พบ NULL

ตัวอย่าง

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

ในตัวอย่างข้างต้น เริ่มจากโหนดแรก โหนดทั้งหมดจะถูกข้ามไป เช่น 1, 2 3, 4, 5, 6 และผลิตภัณฑ์ของโหนดคือ 1*2*3*4*5*6 =120

ผลิตภัณฑ์ของโหนดของ Singly Linked List

แนวทางที่ใช้ด้านล่างมีดังนี้

  • ใช้ตัวชี้ชั่วคราว สมมติว่า อุณหภูมิของโหนดประเภท
  • ตั้งค่าตัวชี้ชั่วคราวนี้เป็นโหนดแรกซึ่งชี้โดยตัวชี้ส่วนหัว
  • ย้าย temp ไปที่ temp ->ถัดไป ในขณะที่ temp ไม่ได้เป็น NULL
  • ตั้งค่า product=product*(temp->data)

อัลกอริทึม

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

ตัวอย่าง

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

ผลลัพธ์

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