Linked Lists डेटा स्ट्रक्चर में ज़रूरी होते हैं क्योंकि ये डेटा को डायनामिक तरीके से स्टोर और मैनेज करते हैं। Circular Linked List, सामान्य Linked List की कुछ लिमिटेशन को दूर करता है जैसे कि लास्ट नोड के बाद NULL होना, जिससे ट्रैवर्सल सीमित होता है।
What is Linked List in Hindi? – लिंक्ड लिस्ट क्या है?
Linked List एक ऐसा डेटा स्ट्रक्चर है जिसमें डेटा के छोटे हिस्से यानी नोड्स होते हैं, और हर नोड अगले नोड का पता (पॉइंटर) रखता है। यह Arrays से अलग होता है क्योंकि इसमें डेटा लगातार मेमोरी में नहीं होता, और आसानी से बढ़ाया या घटाया जा सकता है।
What is Circular Linked List in Hindi? – सर्कुलर लिंक्ड लिस्ट क्या है?
Circular Linked List में आखिरी नोड सीधे पहले नोड से जुड़ा होता है, जिससे लिस्ट एक सर्किल की तरह बन जाती है। इसका फर्क यह है कि सिंगली या डबल लिंक्ड लिस्ट में आखिरी नोड का अगला NULL होता है, लेकिन यहाँ नहीं।
Working of Circular Linked List in Hindi – सर्कुलर लिंक्ड लिस्ट का कार्य
एक नोड जोड़ें।
हर नोड अगले नोड को पॉइंटर करता है।
आखिरी नोड फिर से पहले नोड को पॉइंटर करता है, इसलिए ट्रैवर्स कभी खत्म नहीं होता।
Example: 1 -> 2 -> 3 -> (फिर वापस 1)
Types of Circular Linked List in Hindi – सर्कुलर लिंक्ड लिस्ट के प्रकार
1. Singly Circular Linked List in Hindi
इसमें हर नोड केवल अगले नोड का पता (पॉइंटर) रखता है, और आखिरी नोड वापस पहले नोड से जुड़ा होता है, जिससे लिस्ट एक सर्किल बन जाती है। इसका फायदा ये है कि ट्रैवर्सल एक ही दिशा में होता है, जिससे सिंपल ऑपरेशन्स तेज होते हैं। इसकी मेमोरी कमी भी होती है क्योंकि हर नोड में केवल एक पॉइंटर होता है। लेकिन पिछली तरफ बैक जाने की सुविधा नहीं होती।
Representation of Circular Singly Linked List in Hindi
2. Doubly Circular Linked List in Hindi
इसमें हर नोड के दो पॉइंटर होते हैं, एक पिछले नोड और एक अगले नोड के लिए। लास्ट नोड का अगला पॉइंटर पहले नोड से जुड़ा होता है, और पहले नोड का पिछला पॉइंटर आखिरी नोड से जुड़ा होता है। इससे हम लिस्ट में दोनों दिशाओं में आसानी से ट्रैवर्स कर सकते हैं। यह फ्लीक्सिबिलिटी बढ़ाता है, खासकर जब डिलीट या इंसर्शन ऑपरेशन्स ज्यादा होते हैं। लेकिन इसकी मेमोरी ज़्यादा लगती है क्योंकि हर नोड में दो पॉइंटर स्टोर होते हैं।
Representation of Circular Doubly Linked List in Hindi
Operations on Circular Linked List in Hindi – सर्कुलर लिंक्ड लिस्ट के ऑपरेशन्स
Insertion: शुरुआत, अंत या बीच में नोड डालना।
Deletion: किसी भी नोड को हटाना, जैसे शुरुआत, अंत या स्पेसिफिक नोड।
Traversal: एक नोड से शुरू कर हर नोड को एक्सेस करना, और कनेक्शन के कारण लूप में रहना।
Advantages of Circular Linked List in Hindi – सर्कुलर लिंक्ड लिस्ट के लाभ
मेमोरी का सफ़लता से उपयोग होता है क्योंकि पॉइंटर्स लूप में होते हैं।
लगातार और अनलिमिटेड ट्रैवर्सल संभव है, कोई NULL पर रुकावट नहीं।
टर्न-बेस्ड सिस्टम (जैसे गेम्स, शेड्यूलिंग) के लिए परफेक्ट।
राउंड-रॉबिन शेड्यूलिंग में इफिशिएंट काम करता है।
लूप के कारण लास्ट नोड को ट्रैक करना आसान हो जाता है।
Disadvantages of Circular Linked List in Hindi – सर्कुलर लिंक्ड लिस्ट के नुकसान
इम्प्लीमेंटेशन और मैनेजमेंट सिंगली लिंक्ड लिस्ट से जटिल।
गलत पॉइंटर से लूप में अटके रहने का खतरा रहता है।
डिबगिंग में टाइम लगता है क्योंकि लूप अनइंटेंडेड इन्फिनिट चक्र पैदा कर सकता है।
एरर हैंडलिंग चुनौतीपूर्ण हो सकती है।
Applications of Circular Linked List in Hindi – सर्कुलर लिंक्ड लिस्ट के अनुप्रयोग
ऑपरेटिंग सिस्टम में प्रोसेस शेड्यूलिंग (Round Robin algorithm) ।
मल्टीप्लेयर गेम्स में खिलाड़ियों की टर्न मैनेजमेंट।
नेटवर्क बफर्स और बैंडविड्थ मैनेजमेंट।
रियल-टाइम सिस्टम्स जहां लगातार रिपीट होने वाले टास्क होते हैं।
कंज्यूमर-प्रोड्यूसर मॉडल में डेटा बफरिंग के लिए।
सर्कुलर लिंक्ड लिस्ट का कोड उदाहरण (C भाषा में) – Code example of Circular Linked List (in C language) in Hindi
Input:
C
#include
#include
typedef struct Node {
int data;
struct Node* next;
} Node;
// Create a new node
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// Insert node at end of circular linked list
void insertEnd(Node** head, int data) {
Node* newNode = createNode(data);
if (*head == NULL) {
*head = newNode;
newNode->next = *head;
return;
}
Node* temp = *head;
while (temp->next!= *head) {
temp = temp->next;
}
temp->next = newNode;
newNode->next = *head;
}
// Display the circular linked list
void displayList(Node* head) {
if (head == NULL) return;
Node* temp = head;
do {
printf("%d ", temp->data);
temp = temp->next;
} while (temp!= head);
printf("\n");
}
int main() {
Node* head = NULL;
insertEnd(&head, 10);
insertEnd(&head, 20);
insertEnd(&head, 30);
printf("Circular Linked List: ");
displayList(head);
return 0;
}
Output of the Program:
जब आप ऊपर वाला Circular Linked List प्रोग्राम रन करेंगे, तो आउटपुट कुछ इस तरह होगा:
Plain
Circular Linked List: 10 20 30
Comparison of Circular, Singly, and Doubly Linked Lists in Hindi – सर्कुलर, सिंगली और डबल लिंक्ड लिस्ट का तुलना
Circular Linked List डेटा को ऐसे मैनेज करता है जो लिस्ट को लूप में रखता है, जिससे ट्रैवर्सल और मेमोरी उपयोग बेहतर होता है। ये समझना कोडिंग इंटरव्यू और रियल वर्ल्ड सिस्टम्स के लिए जरूरी है।