Insertion at the beginning in Circular Linked List in C++
How to insert new node at beginning in a circular linked list in C++?
On this page we will look at different methods to insert at the start or beginning in a circular linked list
What insertion at the beginning may require?
- Changing the current head
- Changing the next node of the last node in circular linked list.
Methods discussed
- Method 1: Linked List Insertion using Struct
- Method 2: Linked List Insertion using class (without class methods)
- Method 3: Linked List Insertion using class (with class methods)
C++ Program for insertion at beginning in circular linked list
We will look at all the three methods below –
Method 1
Method 2
Method 3
Method 1
Linked List Insertion using Struct
Run
#include<iostream>
using namespace std;
// structure for Circular Linked List
struct Node
{
int data;
struct Node *next;
};
int calcSize (struct Node *head);
void insertStart (struct Node **head, int data)
{
struct Node *newNode = (struct Node *) malloc (sizeof (struct Node));
newNode->data = data;
// if its the first node being entered
if (*head == NULL)
{
*head = newNode; // assigning itself as head
(*head)->next = *head; // assigning itself as next node
cout << newNode->data << " Inserted\n"; return; } // if CLL already as >=1 node
struct Node *curr = *head;
// traverse till last node in CLL
while (curr->next != *head)
{
curr = curr->next;
}
curr->next = newNode; // last node's next as this new node
newNode->next = *head; // new node's next as current head node
*head = newNode; // changing head node to this new node
cout << newNode->data << " Inserted\n";
// previous head node becomes 2nd node
}
void display (struct Node *head)
{
// if there are no node in CLL
if (head == NULL)
return;
struct Node *temp = head;
cout << "\nLinked List : ";
//need to take care of circular structure of CLL
do
{
cout << temp->data << " "; temp = temp->next;
}
while (temp != head);
cout << endl;
}
int main ()
{
// first node will be null at creation
struct Node *head = NULL;
insertStart (&head, 1);
insertStart (&head, 2);
insertStart (&head, 3);
insertStart (&head, 4);
insertStart (&head, 5);
display (head);
return 0;
}
Output
1 Inserted 2 Inserted 3 Inserted 4 Inserted 5 Inserted Linked List : 5 4 3 2 1
Method 2
Linked List Insertion using class (without class methods)
Run
#include<iostream>
using namespace std;
class Node
{
public:
int data;
Node *next;
};
void insertStart (Node ** head, int data)
{
Node *newNode = new Node ();
newNode->data = data;
// if first node is being inserted
if (*head == NULL)
{
*head = newNode;
(*head)->next = *head;
cout << newNode->data << " Inserted" << endl;
return;
}
// if had more than 1 node do below
Node *curr = *head;
// traverse till last node in circular Linked List
while (curr->next != *head)
{
curr = curr->next;
}
curr->next = newNode;
newNode->next = *head;
cout << newNode->data << " Inserted" << endl;
*head = newNode;
}
void display (Node * head)
{
cout << "\nLinked List : " << endl;
// if circular linked list is empty currently
if (head == NULL)
return;
Node *temp = head;
// since we need to take care of circular nature of linked list
do
{
cout << temp->data << " ";
temp = temp->next;
}
while (temp != head);
cout << endl;
}
int main ()
{
// first node will be null at creation
Node *head = NULL;
insertStart (&head, 1);
insertStart (&head, 2);
insertStart (&head, 3);
insertStart (&head, 4);
insertStart (&head, 5);
display (head);
return 0;
}
Output
1 Inserted 2 Inserted 3 Inserted 4 Inserted 5 Inserted Linked List : 5 4 3 2 1
Method 3
Since we use internal class function in this method we do not require to pass head everytime, in functions.
Run
#include<iostream>
using namespace std;
class Node
{
public:
int data;
Node *next;
};
class LinkedList
{
private:
Node * head;
public:
LinkedList ()
{ // constructor
head = NULL;
}
void insertStart (int data);
void display ();
};
void LinkedList::insertStart (int data)
{
Node *newNode = new Node ();
newNode->data = data;
// if first node is being inserted
if (head == NULL)
{
head = newNode;
head->next = head;
cout << newNode->data << " inserted" << endl;
return;
}
// if had more than 1 node do below
Node *curr = head;
// traverse till last node in circular Linked List
while (curr->next != head)
{
curr = curr->next;
}
curr->next = newNode;
newNode->next = head;
head = newNode;
cout << newNode->data << " inserted" << endl;
}
void LinkedList::display ()
{
cout << "\nCircular Linked List : " << endl;
// if circular linked list is empty currently
if (head == NULL)
return;
Node *temp = head;
// since we need to take care of circular nature of linked list
do
{
cout << temp->data << " ";
temp = temp->next;
}
while (temp != head);
cout << endl;
}
int main ()
{
// first node will be null at creation
LinkedList *circular_list = new LinkedList ();
circular_list->insertStart (1);
circular_list->insertStart (2);
circular_list->insertStart (3);
circular_list->insertStart (4);
circular_list->insertStart (5);
circular_list->display ();
return 0;
}
Output
1 inserted 2 inserted 3 inserted 4 inserted 5 inserted Circular Linked List : 5 4 3 2 1
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Circular Linked List
- Introduction to Circular Linked List
Click Here - Circular Linked List Applications
Click Here - Circular Linked List in –
- Insertion in Circular Linked List –
- Insertion at the beginning–
- Insertion at the end –
- Insertion at nth position –
- Deletion in Circular Linked List –
- Deletion from beginning in Circular Linked List –
- Deletion from nth position in Circular Linked List –
- Deletion from end in Circular Linked List –
- Insertion and Deletion in Circular Linked List – C | C++ | Java
- Split a Circular Linked List in two halves –
- Count nodes in Circular Linked List –
- Sorted Insert In Circular Linked List –
- Insertion in the middle in Circular Linked List –
Circular Linked List
- Introduction to Circular Linked List
- Circular Linked List Applications
- Circular Linked List in – C | C++ | Java
- Insertion in Circular Linked List – C | C++ | Java
- Deletion in Circular Linked List – C | C++ | Java
- Insertion and Deletion in a Circular Linked List – C | C++ | Java
- Split a Circular Linked List in two halves – C | C++ | Java
- Count nodes in Circular Linked List – C | C++ | Java
- Sorted Insert In Circular Linked List – C | C++ | Java
- Insertion in the middle in Circular Linked List – C | C++ | Java

Login/Signup to comment