सर्कुलर सिंगली लिंक्ड लिस्ट
अंतिम नोड पहले नोड (head) को इंगित करता है, जिससे एक वृत्त बनता है। केवल head संदर्भ से पूरी सूची एक्सेस की जा सकती है।
C++ प्रोग्राम उदाहरण
#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 = 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
कोड व्याख्या
insert() फ़ंक्शन
शुरुआत में नोड डालता है। यदि सूची खाली है, तो नया नोड खुद को इंगित करता है। अन्यथा, अंतिम नोड (जो head को इंगित करता है) को ढूंढकर उसका next नए नोड पर सेट करता है। फिर head को नए नोड पर अपडेट करता है।
display() फ़ंक्शन
do-while लूप का उपयोग करता है क्योंकि कम से कम एक बार चलना आवश्यक है। जब ptr वापस head पर पहुंचता है तो रुक जाता है।
उपयोग के मामले
- राउंड-रॉबिन शेड्यूलिंग
- मल्टीप्लेयर गेम में टर्न प्रबंधन
- बफर कार्यान्वयन