लिंक्ड लिस्ट डायनामिक मेमोरी आवंटन का उपयोग करती हैं यानी वे तदनुसार बढ़ती और सिकुड़ती हैं। उन्हें नोड्स के संग्रह के रूप में परिभाषित किया जाता है। यहां, नोड्स के दो भाग होते हैं: डेटा और लिंक। डेटा, लिंक और लिंक्ड लिस्ट का प्रतिनिधित्व नीचे दिया गया है।
लिंक्ड लिस्ट के प्रकार
लिंक्ड लिस्ट के चार प्रकार होते हैं:
- सिंगल / सिंगली लिंक्ड लिस्ट
- डबल / डबली लिंक्ड लिस्ट
- सर्कुलर सिंगल लिंक्ड लिस्ट
- सर्कुलर डबल लिंक्ड लिस्ट
रिकर्सन मेथड का उपयोग करके लिंक्ड लिस्ट की लंबाई खोजने की लॉजिक:
int length(node *temp) {
if(temp == NULL)
return l;
else {
l = l + 1;
length(temp->next);
}
}
प्रोग्राम
लिंक्ड लिस्ट की लंबाई खोजने का C प्रोग्राम:
#include <stdio.h>
#include <stdlib.h>
typedef struct linklist {
int data;
struct linklist *next;
} node;
int l = 0;
int main() {
node *head = NULL, *temp, *temp1;
int len, choice, count = 0, key;
do {
temp = (node *)malloc(sizeof(node));
if(temp != NULL) {
printf("\nलिस्ट में एलिमेंट्स दर्ज करें: ");
scanf("%d", &temp->data);
temp->next = NULL;
if(head == NULL) {
head = temp;
} else {
temp1 = head;
while(temp1->next != NULL) {
temp1 = temp1->next;
}
temp1->next = temp;
}
} else {
printf("\nमेमोरी फुल है");
}
printf("\nलिस्ट में डेटा दर्ज करने के लिए 1 दबाएं: ");
scanf("%d", &choice);
} while(choice == 1);
len = length(head);
printf("लिस्ट में %d नोड्स हैं", l);
return 0;
}
// लंबाई खोजने के लिए रिकर्सिव फंक्शन
int length(node *temp) {
if(temp == NULL)
return l;
else {
l = l + 1;
length(temp->next);
}
}
आउटपुट
जब उपरोक्त प्रोग्राम निष्पादित होता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है:
Run 1: लिस्ट में एलिमेंट्स दर्ज करें: 3 लिस्ट में डेटा दर्ज करने के लिए 1 दबाएं: 1 लिस्ट में एलिमेंट्स दर्ज करें: 56 लिस्ट में डेटा दर्ज करने के लिए 1 दबाएं: 1 लिस्ट में एलिमेंट्स दर्ज करें: 56 लिस्ट में डेटा दर्ज करने के लिए 1 दबाएं: 0 लिस्ट में 3 नोड्स हैं Run 2: लिस्ट में एलिमेंट्स दर्ज करें: 12 लिस्ट में डेटा दर्ज करने के लिए 1 दबाएं: 1 लिस्ट में एलिमेंट्स दर्ज करें: 45 लिस्ट में डेटा दर्ज करने के लिए 1 दबाएं: 0 लिस्ट में 2 नोड्स हैं