- Circular linked list एक डाटा स्ट्रक्चर होता है जिसमें last node, पहले node से जुड़ा हुआ रहता है।
- इसमें लिस्ट का आखिरी (last) नोड पहले नोड से जुड़कर एक सर्कल (circle) बना लेता है। इसलिए इसे Circular Linked List कहते हैं।
- दूसरे शब्दों में कहें तो, “Circular Linked List एक प्रकार का linked list है जिसमें last node का अगला पॉइंटर (pointer) पहले नोड (first node) की ओर पॉइंट करता है।“
- सर्कुलर लिंक्ड लिस्ट में कोई भी नोड ऐसा नहीं होता जो NULL की ओर पॉइंट करे, इसलिए यह एक loop की तरह कार्य करता है।
सर्कुलर लिंक्ड लिस्ट के प्रकार (Types of Circular Linked List in Hindi)
Circular linked list के दो प्रकार होते हैं:-
1:- Circular Singly Linked List
Circular Singly Linked List में प्रत्येक node के पास सिर्फ एक pointer होता है जिसे “next” pointer कहा जाता है। इसमें आखिरी नोड, पहले नोड की तरफ point करता है।
2:- Circular Doubly Linked List:
Circular Doubly Linked List में प्रत्येक नोड के पास दो pointers होते हैं – “prev” और “next”. इसमें लास्ट नोड का “next” pointer पहले नोड की ओर point करता है, और पहले नोड का “prev” pointer लास्ट नोड की ओर point करता है।
इसे पढ़ें:-
सर्कुलर लिंक्ड लिस्ट के फायदे (Advantages of Circular Linked List in Hindi)
- किसी भी नोड से traversal करना आसान: सर्कुलर लिंक्ड लिस्ट में आप किसी भी नोड से traversal शुरू कर सकते हैं और पूरी लिस्ट को ट्रैवर्स (traverse) कर सकते हैं।
- तेज एक्सेस: लास्ट नोड तक पहुँचने के बाद आप सीधे पहले नोड पर वापस आ सकते हैं बिना किसी परेशानी के।
- Memory का efficient (प्रभावी) उपयोग: इसमें NULL pointers का इस्तेमाल नहीं किया जाता है, जिससे memory का wastage कम होता है।
सर्कुलर लिंक्ड लिस्ट के ऑपरेशंस (Operations on Circular Linked List)
- Insertion: सर्कुलर लिंक्ड लिस्ट में नोड को insert करने के लिए, आपको नोड को इस तरह से जोड़ना होता है कि वह सही पॉइंटर्स के साथ linked हो जाए और सर्कल बना रहे।
- Deletion: Deletion के दौरान नोड को remove करते समय उसके आसपास के नोड्स को इस तरह से लिंक करना होता है कि सर्कल break न हो।
- Traversal: Traversal के दौरान आप किसी भी नोड से शुरुआत कर सकते हैं और लिस्ट में घूमते हुए वापस उसी नोड पर आ सकते हैं।
Circular Linked List का उदाहरण
नीचे आपको C programming भाषा का प्रोग्राम दिया गया है:-
#include <stdio.h>
#include <stdlib.h>
// नोड की संरचना (Node Structure)
struct Node {
int data;
struct Node* next;
};
// नोड को जोड़ने के लिए फंक्शन (Function to Insert a Node)
void insert(struct Node** head_ref, int data) {
// नया नोड बनाएं (Create a New Node)
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
struct Node* last = *head_ref;
new_node->data = data;
new_node->next = *head_ref;
// अगर लिस्ट खाली है (If the List is Empty)
if (*head_ref != NULL) {
while (last->next != *head_ref)
last = last->next;
last->next = new_node;
} else {
new_node->next = new_node; // पहला नोड खुद को पॉइंट करेगा (First Node Points to Itself)
}
*head_ref = new_node;
}
// लिस्ट को प्रिंट करने के लिए फंक्शन (Function to Print the List)
void printList(struct Node* head) {
struct Node* temp = head;
if (head != NULL) {
do {
printf("%d ", temp->data);
temp = temp->next;
} while (temp != head);
}
printf("\n");
}
// मेन फंक्शन (Main Function)
int main() {
struct Node* head = NULL;
insert(&head, 12);
insert(&head, 56);
insert(&head, 2);
insert(&head, 11);
printf("Circular Linked List: ");
printList(head);
return 0;
}