Deletion from specific position in circular linked list in C++
How to delete from specific position in circular linked list?
Deletion from nth position in a circular linked list is one of the variation of deletion operation that we usually perform on Circular Linked List. For performing deletion from a specific location we make use of pointers for traversing the circular linked list. Let’s see a C++ Program for deletion from nth position in a circular linked list
Steps to delete from specific position in circular linked list in CPP
- Initialize two node pointers p and q
- Initialize a variable k that will act as counter variable.
- Initialize del with pos-1.
- Now run a loop until k does not equal to del.
- In this loop make q=p and p=p->next
- Increase value of k by one on every successful iteration.
- Now make next of q equal to next of p.
- Delete node pointed by node pointer p.
struct node { int num; struct node * next; }
Algorithm in CPP programming to delete from specific position in Circular Linked List
- STRUCT NODE P & Q
- K = 0
- DEL = POS-1
- P = HEAD
- WHILE (K != DEL)
- Q = P
- P = P -> NEXT
- K++
- Q -> NEXT = P -> NEXT
- FREE P
C++ program for deletion from specific position in circular linked list
Run
#include<iostream>
using namespace std;
struct Node
{
int num;
struct Node *next;
};
void insertStart (struct Node **head, int data) //function to create linked list
{
struct Node *newNode = (struct Node *) malloc (sizeof (struct Node));
newNode->num = 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->num << " 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->num << " Inserted\n"; // previous head node becomes 2nd node
}
void deleteBegin (struct Node **head) //function to delete beginning node from the circular linked list
{
struct Node *p, *temp; p = *head;
while (p->next != (*head))
{
p = p->next;
}
temp = *head;
p->next = (*head)->next;
*head = (*head)->next;
free (temp);
}
void deleteSpecific (struct Node **head, int pos) //function to delete any node from the list
{
if (pos < 1)
{
cout << "Invalid position entered";
}
else if (pos == 1) {
deleteBegin (head);
}
else {
struct Node *p, *q;
int del, k = 0;
del = pos - 1; p = *head;
while (k != del) {
q = p;
p = p->next;
k++;
}
q->next = p->next;
free (p); //deleting specific node
} //deleting specific node
}
void display (struct Node *head)
{
cout << "\nCircular Linked List : " << endl;
// if circular linked list is empty currently
if (head == NULL)
return;
struct Node *temp = head;
// since we need to take care of circular nature of linked list
do
{
cout << temp->num << " "; temp = temp->next;
}
while (temp != head);
cout << endl;
}
int main () //main function
{
// 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);
cout << "Before deletion ";
display (head);
deleteSpecific (&head, 5);
cout << "After deletion ";
display (head);
return 0;
}
Output: 1 Inserted 2 Inserted 3 Inserted 4 Inserted 5 Inserted Before deletion Circular Linked List : 5 4 3 2 1 After deletion Circular Linked List : 5 4 3 2
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