Delete Complete Linked List

Delete Complete Linked List” is one of the basic problem exercise for beginners. Here, we are given a linked list and our task is to delete complete linked list or simply, delete all the nodes of the linked list.

To do so, we will traverse the complete linked list and then delete the given nodes one after another during traversing.

The steps required to delete complete linked list is as follows:

  1. Traverse the complete linked list.
  2. While traversing, delete the nodes one after another.
  3. Mark head of the list as NULL.

C++ Program to delete complete linked list is as follows:

/* C++ Program to Delete Complete Linked List */
#include<bits/stdc++.h>
using namespace std;

/* strcuture of the node of the Linked List */
struct node
{
    int data;
    struct node *next;
};

/* Function to inset node at the end of the linked list */
void insert_end(struct node **head, int ele)
{
    /* Creating a new node */
    struct node *new_node;
    new_node = (struct node*)malloc(sizeof(struct node));
    new_node->data = ele;
    new_node->next = NULL;
     
    /* check whether the linked list is empty or not */
    
    /* If Linked List is empty, make new node to the head of the linked list */
    if(*head == NULL)     
    {
        *head = new_node;
        return;
    }
    
    /* If Linked List is not empty, then traverse the complete linked list and point the pointer
    of the last node of the linked list to the new node */
    struct node *temp = NULL;
    temp = (*head);
    while(temp->next != NULL)
    temp=temp->next;
    temp->next = new_node;
}

/* Function to delete the complete Linked List */
void deleteALL(struct node **head)
{
    /* If Linked List is NULL, simply return */
    if(*head == NULL)
    return;
    struct node *temp = (*head);
    struct node *p;
    /* Traverse the complete Linked List and Delete all the nodes one by one */
    while(temp!=NULL)
    {
        p = temp;
        temp = temp->next;
        delete p;
    }
    /* Make Head to the NULL */
    (*head) = NULL;
}

/* Function to Print the Linked List */
void print(struct node *head)
{
    struct node *p = head;
    while(p!=NULL)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
}
int main()
{
    struct node *head;
    head = NULL;
    /* Inserting Some Nodes in the Linked List */
    insert_end(&head,1);
    insert_end(&head,2);
    insert_end(&head,3);
    insert_end(&head,4);
    cout<<"The linked list elements before deleting:\n";
    print(head);
    deleteALL(&head);
    cout<<"\nThe linked list elements after deleting:\n";
    print(head);
}
OUTPUT:
The linked list elements before deleting:
1 2 3 4
The linked list elements after deleting:

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *