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:
- head: A pointer of
Node
type pointing to the first node of the linked list. - 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 04: Set
- Step 06: [End of If ]
- Step 07: Else
- Step 08: Set
temp → next = head
- Step 09: Set
head = temp
- Step 08: Set
- Step 10: [End of Else block. ]
- Step 11: Stop
Visual Representation:

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?