सर्कुलर सिंगल लिंक्ड लिस्ट एक प्रकार की डेटा संरचना है जो नोड्स से बनी होती है जो सेल्फ रेफरेंशियल स्ट्रक्चर का उपयोग करके बनाई जाती है। इनमें से प्रत्येक नोड में दो भाग होते हैं, अर्थात् डेटा और अगली सूची नोड का संदर्भ।
संपूर्ण लिंक की गई सूची तक पहुँचने के लिए केवल पहली सूची नोड के संदर्भ की आवश्यकता होती है। इसे सिर के रूप में जाना जाता है। सूची में अंतिम नोड सूची के शीर्ष या पहले नोड को इंगित करता है। यही कारण है कि इसे सर्कुलर लिंक्ड लिस्ट के रूप में जाना जाता है।
सर्कुलर सिंगल लिंक्ड लिस्ट को लागू करने का कार्यक्रम इस प्रकार दिया गया है।
उदाहरण
#include <iostream> using namespace std; struct Node { int data; struct Node *next; }; struct Node* head = NULL; void insert(int newdata) { struct Node *newnode = (struct Node *)malloc(sizeof(struct Node)); struct Node *ptr = head; newnode->data = newdata; newnode->next = head; if (head!= NULL) { while (ptr->next != head) ptr = ptr->next; ptr->next = newnode; } else newnode->next = newnode; head = newnode; } void display() { struct Node* ptr; ptr = head; do { cout<<ptr->data <<" "; ptr = ptr->next; } while(ptr != head); } int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout<<"The circular linked list is: "; display(); return 0; }
आउटपुट
The circular linked list is: 9 2 7 1 3
उपरोक्त कार्यक्रम में, संरचना नोड लिंक्ड सूची नोड बनाता है। इसमें डेटा और अगले लिंक्ड लिस्ट नोड के लिए एक पॉइंटर होता है। यह इस प्रकार दिया गया है।
struct Node { int data; struct Node *next; };
फ़ंक्शन सम्मिलित करें () लिंक की गई सूची की शुरुआत में डेटा सम्मिलित करता है। यह एक नया नोड बनाता है और न्यूनोड के डेटा क्षेत्र में संख्या सम्मिलित करता है। यदि सिर न्यूल है, तो न्यूनोड स्वयं को इंगित करता है अन्यथा सर्कुलर लिंक्ड सूची में अंतिम नोड न्यूनोड को इंगित करता है। फिर सिर सूची की शुरुआत यानी न्यूनोड की ओर इशारा करता है। यह नीचे दिया गया है।
void insert(int newdata) { struct Node *newnode = (struct Node *)malloc(sizeof(struct Node)); struct Node *ptr = head; newnode->data = newdata; newnode->next = head; if (head!= NULL) { while (ptr->next != head) ptr = ptr->next; ptr->next = newnode; } else newnode->next = newnode; head = newnode; }
फ़ंक्शन डिस्प्ले () पूरी लिंक की गई सूची को प्रदर्शित करता है। पहला पीटीआर सिर की ओर इशारा करता है। फिर इसे लगातार अगले नोड तक भेजा जाता है जब तक कि नोड्स के सभी डेटा मान मुद्रित नहीं हो जाते। यह नीचे दिया गया है।
void display() { struct Node* ptr; ptr = head; do { cout<< ptr->data <<" "; ptr = ptr->next; } while(ptr != head); }
फ़ंक्शन मुख्य () में, पहले विभिन्न मानों को सम्मिलित () कॉल करके सर्कुलर लिंक्ड सूची में डाला जाता है। फिर लिंक की गई सूची प्रदर्शित होती है। यह नीचे दिया गया है।
int main() { insert(3); insert(1); insert(7); insert(2); insert(9); cout<<"The circular linked list is: "; display(); return 0; }