Data Structures in Hindi : Linked List Deletion

Linked List Deletion

  • Introduction to linked list deletion in Hindi
  • Example of linked list deletion in Hindi

Introduction to Linked List Deletion 

Linked list में से किसी node को delete करने के लिए आप C language में available free() function का प्रयोग करते है। यह function malloc() function द्वारा dynamically allocate की गयी memory को free करता है।

Linked list deletion के लिए जो function आप create करेंगे वह argument के रूप में data को लेगा। जिस node का data इस argument के रूप में pass किये गए data से match होगा वही node delete की जायेगी।

Function में सबसे पहले आप check करते है की कँही linked list empty तो नहीं है। यदि linked list empty है तो आप appropriate message display करेंगे। इसके लिए आप statements इस प्रकार define करेंगे।

q = start;

if(q==NULL)
{
      printf("List is empty");
}

इसके बाद आप check करते है की क्या first node को remove किया जा रहा है। इसके लिए आप इस प्रकार statement लिखेंगे।

if(q->Data == Num) // because q = start

यदि remove किये जाने वाली node first है तो second node को start node बनाया जायेगा और start node को free किया जाएगा। इसके लिए आप इस प्रकार statement लिखेंगे।

start = q->Next;

free(q);

यदि delete की जाने वाली node first नहीं है तो किसी भी दूसरी position की node को delete करने के लिए आपको linked list को traverse करना होगा और उस position पर पहुँचना होगा। Loop द्वारा linked list को traverse करके आप उस position पर पहुँचते है जिस node को आप delete करना चाहते है। इसके लिए loop आप इस प्रकार define करेंगे।

while(q!=NULL)
{
 
}


Loop के अंदर आप linked list की हर node के data को function को pass किये गए data से match करेंगे। जिस node का data match होगा उससे previous वाली node के next pointer field में उसके next node का address pass किया जाएगा। इसके लिए आप निचे दिए गए statements define करेंगे।

t->Next = q->Next;
free(q);


Example of Linked List Deletion

Linked list की किसी node को delete करना निचे उदाहरण द्वारा समझाया जा रहा है।

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

struct Node
{
    int Data;
    struct Node *Next;
};

void main()
{

     struct Node *start, *second, *third, *fourth, *q, *t;

     start = (struct Node*) malloc(sizeof(struct Node));
     second = (struct Node*) malloc(sizeof(struct Node));
     third = (struct Node*) malloc(sizeof(struct Node));
     fourth = (struct Node*) malloc(sizeof(struct Node));

     start->Data=1;
     start->Next = second;

     second->Data = 2;
     second->Next = third;

     third->Data = 3;
     third->Next = fourth;

     fourth->Data = 4;
     fourth->Next = NULL;

     printf("Linked list items before deletion are : \n");

     for(q=start;q!=NULL;q=q->Next)
     {
            printf("%d\n",q->Data);
     }
   

     void deleteNode(int data)
      {
           q = start;
           if(q==NULL)
           {
                   printf("Linked list is empty");
                   return;
           }

           if(q->Data==data)
           {
                start = q->Next;
                printf("Node is deleted\n");
                free(q);
                return;
           }

            t = q;
         
             while(q!=NULL)
             {
                  if(q->Data == data)
                  {
                        t->Next = q->Next;
                        printf("Node deleted...\n");
                        free(q);
                        return;
                  }
 
                   t = q;
                   q = q->Next;

             }
         
            printf("Item to be deleted not found");

      }

     
        deleteNode(3);

        printf("Linked list items after deletion are: \n");
   
        for(q=start;q!=NULL;q=q->Next)
        {
              printf("%d\n",q->Data);
        }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Linked list items before deletion are:
1
2
3
4
Node deleted...
Linked list items after deletion are:
1
2
4

      DMCA.com Protection Status

 Leave a comment