Ad Code

Ticker

6/recent/ticker-posts

Linked list in c with operation in hindi | what is linked list with code -oklesson

Data Structure using C in hindi की इस series में आज का हमारा Topic है Linked list Operation in C| आज की इस पोस्ट में हम देखेंगे की हम किस तरह से एक लिंक्ड लिस्ट को implement करते है, और उसके बाद उस पर operation perform करते है| इस पोस्ट में हम एक लिंक्ड लिस्ट का छोटा सा introduction देखेंगे और फिर उसके बाद लिंक्ड लिस्ट पर operation को perform करेंगे|


Linked list in c


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 को देखे| 

struct myList{
    int value;
    struct myList*next;
};code-box

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);  
}
 यह 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);
}
यह 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);
}
यह 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);
}
यह 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);
}
यह function दो argument लेता है, एक फर्स्ट नोड , और दूसरा वह नोड जिसके बाद की नोड को डिलीट करना हो | इस function को implement करना काफी आसान है इसे आप आसानी से अपने प्रोग्राम में implement कर सकते है| 

इस तरह से हम एक लिंक्ड लिस्ट में operation को perform कर सकते है| यदि आप इस लिंक्ड लिस्ट का complete code चाहते है , तो आप इस pdf को डाउनलोड कर सकते है , जिसमे लिंक्ड लिस्ट के ऊपर perform किये जाने वाले सारे operation की coding दी हुई है|

Post a Comment

0 Comments