Deletion from end in circular linked list in C++
How to delete from end in circular linked list?
Deletion from end in circular linked list in C++ is one of the deletion operation that we can perform on the circular sequenced list. The other deletion operations that we can perform are:-
- Deletion from beginning i.e. to delete the head node of the list.
- Deletion from any specific position i.e. to delete any node from the list.
Steps to delete from end in circular linked list in CPP
- Print deletion not possible if list is empty.
- Else define two node pointers cur and prev
- Initialize cur pointer with head
- Change prev pointer to current and cur to cur->next until next of the current does not equal to head.
- Now link last second node that is the node pointed by prev node pointer to head.
- Free cur as it stores the last node of the list.
struct Node { int num; struct Node *next; };
Algorithm to write a CPP program to delete from end in Circular Linked List
- STRUCT CUR & PREV
- CUR=HEAD
- WHILE(CUR->NEXT!=HEAD)
- PREV=CUR
- CUR=CUR->NEXT
- END WHILE
- PREV->NEXT=HEAD
- FREE(CUR)
C++ program for deletion from end in circular linked list
Run
#include<iostream>
using namespace std;
struct Node
{
int num;
struct Node *next;
} *head;
void insertStart(struct Node **head, int data)
{
struct Node *newNode = new Node;
newNode->num = data;
if (*head == NULL)
{
*head = newNode;
newNode->next = *head;
cout << newNode->num << " Inserted\n";
}
else
{
struct Node *curr = *head;
while (curr->next != *head)
{
curr = curr->next;
}
curr->next = newNode;
newNode->next = *head;
*head = newNode;
cout << newNode->num << " Inserted\n";
}
}
void deleteEnd(struct Node **head)
{
if (*head == NULL)
{
cout << "List is empty. Nothing to delete." << endl;
return;
}
struct Node *cur = *head, *prev = nullptr;
while (cur->next != *head)
{
prev = cur;
cur = cur->next;
}
prev->next = cur->next;
if (cur == *head)
{
*head = prev->next;
}
free(cur);
}
void display(struct Node *head)
{
cout << "Circular Linked List: ";
if (head == NULL)
{
cout << "Empty" << endl;
return;
}
struct Node *temp = head;
do
{
cout << temp->num << " ";
temp = temp->next;
} while (temp != head);
cout << endl;
}
int main()
{
struct Node *head = NULL;
insertStart(&head, 1);
insertStart(&head, 2);
insertStart(&head, 3);
insertStart(&head, 4);
insertStart(&head, 5);
cout << "Before deletion: ";
display(head);
deleteEnd(&head);
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