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
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