Data Structure using C in hindi की इस series में आज का हमारा Topic है Linked list Operation in C| आज की इस पोस्ट में हम देखेंगे की हम किस तरह से एक लिंक्ड लिस्ट को implement करते है, और उसके बाद उस पर operation perform करते है| इस पोस्ट में हम एक लिंक्ड लिस्ट का छोटा सा introduction देखेंगे और फिर उसके बाद लिंक्ड लिस्ट पर operation को perform करेंगे|
Also Read :
Linked List क्या है(What is Linked List)
Linked लिस्ट एक linear data structure है, जिसमे Nodes का एक group एक साथ Sequence को प्रदर्शित करता है| linked लिस्ट में एक पॉइंटर variable होता है, इस पॉइंटर variable को head पॉइंटर भी कहते है| यह pointer variable लिस्ट के पहले node के address को point करता है|
Node के दो parts होते है| नोड के पहले पार्ट में data होता है , तथा Node के next पार्ट में अगले नोड का address store रहता है| इसी तरह से प्रत्येक नोड अपने अगले नोड का address store करती है|
Linked List तीन प्रकार की होती है|
- Singly Linked list
- Doubly Linked List
- Circular Linked List
इस पोस्ट में हम सिर्फ Singly लिंक्ड लिस्ट के बार में ही बात करेंगे|
Also Read :
Implementation of a Singly Linked List in c
एक लिंक्ड लिस्ट को implement करने के लिए हमें structure की आवश्यकता होती है| जिसमे एक int data type का variable होता है, और एक self referential structure का एक पॉइंटर होता है, जो की लिस्ट की next नोड को point करता है| उदाहरण के लिए इस code को देखे|
int value;
Operations in Linked List in c Linked
लिस्ट में हम मुख्य रूप से तीन Operation perform करते है|
- Traverse
- Insertion
- Deletion
यह Operation किसी भी लिंक्ड लिस्ट में perform किये जा सकते है| इन Operation की मदद से हम Linked लिस्ट में किसी नोड को जोड़ सकते है, और किसी नोड को हटा भी सकते है| और हमारी लिंक्ड लिस्ट में कितनी nodes है उसे भी देख सकते है| इन operations का प्रयोग जरुरत के हिसाब से किया जाता है|
Also Read :
Traverse Operation in Singly Linked List in c
Traverse का मतलब होता है, की प्रत्येक एलिमेंट पर Visit करना | इसके द्वारा हम लिंक्ड लिस्ट की nodes को प्रिंट कर सकते है| यह कोई pre-define function नहीं है, इसे हमे अपने logic के अनुसार लिखना होता है| उदाहरण के लिए आप यह एक user-define function देखिये |
void PrintList(struct myList*head){
while(head!=NULL){
printf("%d ",head->value);
head=head->next;}
}
यह function एक argument लेता है| यह argument एक head पॉइंटर का address होता है, जो लिंक्ड लिस्ट की पहली Node को point करता है| इस पॉइंटर की मदद से हम लिंक्ड लिस्ट के प्रत्येक Element को प्रिंट कर सकते है| Linked लिस्ट में यही traverse operation कहलाता है|
Insertion Operation in Singly Linked List in c
Insertion का मतलब होता है, किसी वैल्यू को लिंक्ड लिस्ट में insert करना | लिंक्ड लिस्ट में इंसर्शन को तीन प्रकार से perform किया जाता है|
InsertAtstart in Singly Linked List in c
इसमें हम किसी वैल्यू को लिंक्ड लिस्ट के स्टार्टिंग point में ही insert कर देते है| हमारे पास एक लिस्ट है जिसमे तीन Nodes है 10 20 30 | अब यदि हमें एक Node जिसमे डाटा 50 है उसको इसके स्टार्टिंग में insert करना हो , तब यह लिस्ट कुछ ऐसी दिखेगी 50 10 20 30 | इस operation को perform करने के लिए इस code को देखे|
void InsertAtStart(struct myList*head,int
data){
struct myList*FirstNode=(struct myList*)malloc(sizeof(struct myList));
FirstNode->value=data;
FirstNode->next=head;
PrintList(FirstNode);
}
struct myList*FirstNode=(struct myList*)malloc(sizeof(struct myList));
}
यह function दो arguments लेता है| पहला arguments एक head पॉइंटर है जिसमे लिस्ट के पहले नोड का address होता है| और दूसरे argument में वह डाटा होता है जिसे हमें लिस्ट में insert करना है | इस डाटा को लिस्ट में insert करने के लिए हमें एक नोड की जरुरत होगी | उस नोड को बनाने के लिए हमने malloc function की मदद से dynamically memory allocate की है, जिसमे हम डाटा को store करेंगे |
Also Read:
InsertAtLast in Singly Linked List in c
इसमें हम किसी नोड को लिंक्ड लिस्ट के end point पर insert करते है| हमारे पास एक लिस्ट है जिसमे तीन Nodes है 10 20 30 | अब यदि हमें एक Node जिसमे डाटा 50 है उसको इसके end point पर insert करना हो , तब यह लिस्ट कुछ ऐसी दिखेगी 10 20 30 50 | इस operation को perform करने के लिए इस code को देखे|
void InsertAtLast(struct myList*head){
struct myList*LastNode=(struct myList*)malloc(sizeof(struct myList));
struct myList*p;
LastNode->value=120;
p=head;
while(p->next!=NULL){
p=p->next;
}
p->next=LastNode;
LastNode->next=NULL;
PrintList(head);
}
struct myList*LastNode=(struct myList*)malloc(sizeof(struct myList));
struct myList*p;
LastNode->value=120;
while(p->next!=NULL){
}
यह function भी दो arguments लेता है| पहला arguments एक head पॉइंटर है जिसमे लिस्ट के पहले नोड का address होता है| और दूसरे argument में वह डाटा होता है जिसे हमें लिस्ट में insert करना है | नोड को memory allocate करने के लिए हम malloc function का उपयोग करते है, जिसके द्वारा हम नोड के लिए dynamically memory allocate कराते है|
InsertAfterNode in Singly Linked list in c
इसमें हम किसी नोड को किसी particular नोड के बाद insert करते है| हमारे पास एक लिस्ट है जिसमे तीन Nodes है 10 20 30 | अब यदि हमें एक Node जिसमे डाटा 50 है उसको second नोड के बाद insert करना हो | तब यह लिस्ट कुछ ऐसी दिखेगी 10 20 50 30 | इस operation को perform करने के लिए इस code को देखे|
void InsertAfterNode(struct
myList*head,struct myList*position){
struct myList*InsertData=(struct
myList*)malloc(sizeof(struct myList));
InsertData->value=910;
InsertData->next=position->next;
position->next=InsertData;
}
इसमें यह function तीन arguments लेता है, पहला arguments एक head पॉइंटर होता है| जब की दूसरा arguments लिस्ट की उस नोड को point करता है , जिसके बाद हमें एक नयी नोड को insert करना है| आप इसका सारा Source code एक pdf की फॉर्म में डाउनलोड कर सकते है| जोकि बिलकुल फ्री है|
Deletion operation in Linked list in C
insertion operation में हमने देखा था की हम किस तरह से किसी लिस्ट पर इंसर्शन को perform करते है| और हम इंसर्शन को लिंक्ड लिस्ट में कितनी तरह से perform कर सकते है| बिलकुल यही operation हम deletion के साथ भी करेंगे | linked लिस्ट में हम deletion operation को तीन तरह से perform कर सकते है|
DeleteFirstNode in Singly Linked List in c
यह operation किसी लिस्ट की पहली नोड को डिलीट कर देता है| हमारे पास एक लिस्ट है जिसमे तीन Nodes है 10 20 30 | अब यदि हमें इस पर इस operation को perform करना है, तो operation को perform करने के बाद यह लिस्ट कुछ ऐसी दिखेगी 20 30 | इस operation को perform करने के लिए इस code को देखे|
void DeleteFirst(struct myList*head)
{
struct myList *p=head;
head=head->next;
free(p);
printf("After Deletion\n");
PrintList(head);
}
{
struct myList *p=head;
यह function एक argument लेता है , जोकि फर्स्ट नोड होती है| यह function फर्स्ट नोड को delete करके उसकी memory को फ्री कर देता है| और head पॉइंटर को उसके अगले नोड पर point कर देता है|
DeleteLastNode in Singly Linked List in c
यह operation किसी लिस्ट की आखिरी नोड को डिलीट कर देता है| हमारे पास एक लिस्ट है जिसमे तीन Nodes है 10 20 30 | अब यदि हमें इस पर इस operation को perform करना है, तो operation को perform करने के बाद यह लिस्ट कुछ ऐसी दिखेगी 10 20 | इस operation को perform करने के लिए इस code को देखे|
void DeleteLast(struct myList*head)
{
struct myList*p=head;
struct myList*q;
q=head->next;
while(q->next!=NULL)
{
p=p->next;
q=q->next;
}
p->next=q->next;
free(q);
printf("After Deletion\n");
PrintList(head);
}
{
struct myList*p=head;
यह function भी एक argument लेता है , जोकि फर्स्ट नोड होती है| इसे पॉइंटर की मदद से लिस्ट की last नोड तक traverse कराया जाता है| last नोड आने के बाद उसे डिलीट करके उसकी memory को फ्री कर दिया जाता है|
DeleteAfterNode in Singly Linked List
इसमें हम दी गयी particular नोड के बाद की नोड को डिलीट करते है| हमारे पास एक लिस्ट है जिसमे चार Nodes है 10 20 30 40| अब यदि हम चाहते है की 20 के बाद वाली नोड डिलीट हो जाए तब हम इस operation का प्रयोग करते है| इस operation को perform करने के बाद यह लिस्ट कुछ ऐसी दिखेगी 10 20 40| इस operation को perform करने के लिए इस code को देखे|
void DeleteAfterNode(struct myList*
head,struct myList*After)
{
struct myList* p=After;
struct myList* ptr=After->next;
After->next=ptr->next;
free(ptr);
printf("After Deletion\n");
PrintList(head);
}
{
struct myList* p=After;
यह function दो argument लेता है, एक फर्स्ट नोड , और दूसरा वह नोड जिसके बाद की नोड को डिलीट करना हो | इस function को implement करना काफी आसान है इसे आप आसानी से अपने प्रोग्राम में implement कर सकते है|
इस तरह से हम एक लिंक्ड लिस्ट में operation को perform कर सकते है| यदि आप इस लिंक्ड लिस्ट का complete code चाहते है , तो आप इस pdf को डाउनलोड कर सकते है , जिसमे लिंक्ड लिस्ट के ऊपर perform किये जाने वाले सारे operation की coding दी हुई है|
0 Comments
Hey , Comment Your Query or Suggestion