Skip to content

Insert a node at the head of a linked list: Program and Algorithm

In this article, you’ll learn how to insert a node at the head of a linked list in C++, along with that you’ll also see the algorithm to insert a node at the head of a linked list.

So, Let’s get started!

Prerequisite: You should have the knowledge of How do you create a node in a linked list? and How to traverse a singly linked list?

How do you insert a node at the head of a linked list?

Let’s see how you can insert a node at the head of a linked list step-by-step:

Variables we are using here:

  1. head: A pointer of Node type pointing to the first node of the linked list.
  2. temp: The node to be inserted (It will also be of Node type).

The following algorithm inserts a node at the head of a linked list:

Algorithm to insert a node at the head of a linked list:

  • Step 01: Start
  • Step 02: Create a new node with the given data.
  • Step 03:  If head == NULL
    • Step 04: Set head = temp
    • Step 05: Go to step 11
  • Step 06: [End of If ]
  • Step 07: Else
    • Step 08: Set temp → next = head
    • Step 09: Set head = temp
  • Step 10: [End of Else block. ]
  • Step 11: Stop

Visual Representation:

Insert a node at the head of a linked list

Implementation in C++:

Case 01: If the linked list is empty.

// writing a program in C++ to insert a node at the head of a linked list

#include<iostream>
using namespace std;

// creating a class "Node"
class Node
{
    public:
            int data;
            Node *next;

    //constructor
    Node(int data)
    {
        this -> data = data;
        this -> next = NULL;
    }
};


// Traversing a linked list
void TraverseList(Node* &head)
{
    if(head == NULL)
        cout << "List is empty" << endl;
    else
    {
        Node* temp = head;
        while(temp != NULL)
        {
            cout << temp -> data << " -> " ;
            temp = temp -> next;
        }
        cout << "Null" << endl;
    }
}


// function to insert a node at the head of a linked list
void insertAtHead(Node* &head, int data)
{
    //new node creation
    Node* temp = new Node(data);
    
    //if list is empty
    if(head == NULL)
        
        head = temp;
    
    else
    {
        temp -> next = head;
        head = temp;
    }

}


//Driver's code

int main()
{
    // if list is empty
    
    Node* head = NULL;
    insertAtHead(head, 786);
    TraverseList(head);

    return 0;


}

If you compile and run the above program, it will produce the following result:

Output:

786 -> Null


Case 02: If the linked list is not empty.

// writing a program in C++ to insert a node at the head of a linked list

#include<iostream>
using namespace std;

// creating a class "Node"
class Node
{
    public:
            int data;
            Node *next;

    //constructor
    Node(int data)
    {
        this -> data = data;
        this -> next = NULL;
    }
};


// Traversing a linked list
void TraverseList(Node* &head)
{
    if(head == NULL)
        cout << "List is empty" << endl;
    else
    {
        Node* temp = head;
        while(temp != NULL)
        {
            cout << temp -> data << " -> " ;
            temp = temp -> next;
        }
        cout << "Null" << endl;
    }
}


// function to insert a node at the head of a linked list
void insertAtHead(Node* &head, int data)
{
    //new node creation
    Node* temp = new Node(data);
    
    //if list is empty
    if(head == NULL)
        
        head = temp;
    
    else
    {
        temp -> next = head;
        head = temp;
    }

}


//Driver's code

int main()
{
    // if list is not empty (As you can see, initially this linked list contains a single node i.e., node1)
    
    Node* node1 = new Node(100);
    Node* head = node1;
    insertAtHead(head, 786);
    TraverseList(head);

    return 0;


}

If you compile and run the above program, it will produce the following result:

Output:

786 -> 100 -> Null



Conclusion:

In this article, you learned how to insert a node at the head of a linked list in C++, you also became familiar with the algorithm to insert a node at the head of a linked list.

So,

I really hope that you liked my article and got a lot of value from it.

Now, It’s your turn!

If you have any question, feel free to ask in the comment section below right now.

And, and, and…

Don’t forget to share this article to your lovely friends.

Coz, as you know, Sharing is Caring! ?… Right?


Share this Post

Leave a Reply

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