हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य एक सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की गिनती की गणना करना है।
सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व को इंगित करता है और अंतिम तत्व पहले तत्व को इंगित करता है। सिंगल लिंक्ड लिस्ट और डबल लिंक्ड लिस्ट दोनों को सर्कुलर लिंक्ड लिस्ट में बनाया जा सकता है।
नीचे दिए गए प्रोग्राम में, हम एक सिंगल लिंक्ड लिस्ट को सर्कुलर लिंक्ड लिस्ट के रूप में लागू कर रहे हैं ताकि उसमें नोड्स की संख्या की गणना की जा सके।
उदाहरण के लिए
Input − nodes-: 20, 1, 2, 3, 4, 5 Output − count of nodes are-: 6 Input − nodes-: 20, 1, 2, 3, 4, 5, 7, 8, 9, 12 Output − count of nodes are-: 10
नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -
-
नोड द्वारा रखे गए पते और डेटा सहित एकल लिंक की गई सूची के लिए संरचना बनाएं।
-
एक पुश () फ़ंक्शन बनाएं जिसका उपयोग डेटा को नोड में सम्मिलित करने के लिए किया जाएगा।
-
अंतिम नोड में, पहले नोड के पते को एक सर्कुलर लिंक्ड सूची के रूप में एक सिंगल लिंक्ड लिस्ट फंक्शन बनाने के लिए स्टोर करें।
-
एक गणना फ़ंक्शन बनाएं जो एक गोलाकार लिंक्ड सूची में मौजूद नोड्स की कुल संख्या की गणना करेगा।
उदाहरण
#include <stdio.h> #include <stdlib.h> /* Defining a node */ struct node { int data; struct node* next; }; // Inserting node in Circular list void push(struct node** head_ref, int data){ struct node* ptr1 = (struct node*)malloc(sizeof(struct node)); struct node* temp = *head_ref; ptr1->data = data; ptr1->next = *head_ref; // going to the last node to insert new element. if (*head_ref != NULL){ while (temp->next != *head_ref){ temp = temp->next; } temp->next = ptr1; } else{ ptr1->next = ptr1; //for first node } *head_ref = ptr1; } // Function to count the number of nodes int count_fun(struct node* head){ struct node* temp = head; int result = 0; if (head != NULL){ do { temp = temp->next; result++; } while (temp != head); } return result; } int main(){ /* Initializing the list as empty */ struct node* head = NULL; push(&head, 10); push(&head, 20); push(&head, 30); push(&head, 40); printf("count of nodes are: %d", count_fun(head)); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
count of nodes are: 4