Với n nút, nhiệm vụ là in sản phẩm của nút thay thế trong danh sách liên kết. Chương trình chỉ được in sản phẩm của các nút thay thế mà không thực sự thay đổi vị trí của các nút.
Ví dụ
Input -: 10 20 30 40 50 60 Output -: 15000
Trong ví dụ trên, bắt đầu từ nút đầu tiên là 10 nút thay thế là 10, 30, 50 và tích của chúng là 10 * 30 * 50 =15000.
Trong sơ đồ trên, các nút màu xanh lam là các nút thay thế, nếu chúng ta bắt đầu từ nút đầu tiên và các nút màu đỏ là các nút không đáng kể.
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
-
Chuyển nhiệt độ sang tạm thời -> tiếp theo -> tiếp theo trong khi tình huống (tạm thời-> tiếp theo! =NULL &&temp! =NULL &&temp-> tiếp theo-> tiếp theo! =NULL) đúng
-
Đặ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 alternate() declare int product Set temp=head Set product=head->data Loop While(temp->next!=NULL && temp!=NULL && temp->next- >next!=NULL) Set temp=temp->next->next Set product=product * (temp->data) 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 alternate() to find alternate nodes product Stop
MÃ
#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; if(head == NULL) { head = newnode; head->next = NULL; } else { temp=head; while(temp->next!=NULL) { temp=temp->next; } newnode->next=NULL; temp->next=newnode; } } //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 alternate elements void alternate() { int product; temp=head; product=head->data; while(temp->next!=NULL && temp!=NULL && temp->next->next!=NULL) { temp=temp->next->next; product=product * (temp->data); } printf("\nproduct of alternate nodes is %d : " ,product); } int main() { //creating list struct node* head = NULL; //inserting elements into a list insert(10); insert(20); insert(30); insert(40); insert(50); insert(60); //displaying the list printf("linked list is : "); display(); //calling alternate function for finding product alternate(); return 0; }
Đầu ra
linked list is : 10 20 30 40 50 60 product of alternate nodes is : 15000