TheHingineer

  • Data Structures & Algorithms


  • DSA Part-1

  • DSA Part-2

  • DSA Part-3

  • DSA Part-4

  • DSA Part-5

  • Singly Linked List: Deletion Operations

    Singly linked list me kisi node ko delete karte waqt do cheezein essential hoti hain: pointers ko accurately reconnect karna taaki list unbroken rahe, aur C me free() function call karke us node ki memory ko heap me release karna taaki Memory Leak na ho.

    1. Deletion from Beginning – O(1)

    DELETE_FIRST(HEAD)
    1. If HEAD == NULL then:
           Print "List Underflow! Empty list."
           Return NULL
    2. Set temp = HEAD
    3. Set HEAD = HEAD->next
    4. Free(temp)
    5. Return HEAD

    2. Deletion from End – O(n)

    Aakhiri node ko delete karne ke liye second-last node tak traverse karna padta hai taaki uske next pointer ko NULL kiya ja sake:

    List: [ 10 ] ---> [ 20 ] ---> [ 30 ] ---> NULL
                      ^ prev      ^ temp (Last node)
    
    prev->next = NULL;
    free(temp);
    New List: [ 10 ] ---> [ 20 ] ---> NULL
    

    3. Deletion by Key Value – O(n)

    DELETE_BY_KEY(HEAD, KEY)
    1. If HEAD == NULL: Return NULL
    2. If HEAD->data == KEY:
           temp = HEAD; HEAD = HEAD->next; free(temp); Return HEAD
    3. Set curr = HEAD, prev = NULL
    4. While curr != NULL and curr->data != KEY:
           prev = curr; curr = curr->next
    5. If curr == NULL: Print "Key not found!"; Return HEAD
    6. prev->next = curr->next
    7. Free(curr)
    8. Return HEAD

    Agli post me hum cover karenge Singly Linked List: Reversal and Search Operations.

    Scroll to Top