
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
Delete all Prime Nodes from a Doubly Linked List in C++
In this tutorial, we are going to learn how to delete all prime nodes from a doubly linked list.
Let's see the steps to solve the problem.
Write struct with data, prev and next pointers.
Write a function to insert the node into the doubly linked list.
Initialize the doubly linked list with dummy data.
Iterate over the doubly linked list. Find whether the current node data is prime or not.
If the current data is prime, then delete the node.
Write a function to delete the node. Consider the following three cases while deleting the node.
If the node is head node, then move the head to next node.
If the node is middle node, then link the next node to the previous node
If the node is end node, then remove the previous node link.
Example
Let's see the code.
#include <bits/stdc++.h> using namespace std; struct Node { int data; Node *prev, *next; }; void insertNode(Node** head_ref, int new_data) { Node* new_node = (Node*)malloc(sizeof(struct Node)); new_node->data = new_data; new_node->prev = NULL; new_node->next = (*head_ref); if ((*head_ref) != NULL) { (*head_ref)->prev = new_node; } (*head_ref) = new_node; } bool isPrime(int n) { if (n <= 1) { return false; } if (n <= 3) { return true; } if (n % 2 == 0 || n % 3 == 0) { return false; } for (int i = 5; i * i <= n; i = i + 6) { if (n % i == 0 || n % (i + 2) == 0) { return false; } } return true; } void deleteNode(Node** head_ref, Node* del) { if (*head_ref == NULL || del == NULL) { return; } if (*head_ref == del) { *head_ref = del->next; } if (del->next != NULL) { del->next->prev = del->prev; } if (del->prev != NULL) { del->prev->next = del->next; } free(del); return; } void deletePrimeNodes(Node** head_ref) { Node* temp = *head_ref; Node* next; while (temp != NULL) { next = temp->next; if (isPrime(temp->data)) { deleteNode(head_ref, temp); } temp = next; } } void printLinkedList(Node* head) { while (head != NULL) { cout << head->data << " -> "; head = head->next; } } int main() { Node* head = NULL; insertNode(&head, 1); insertNode(&head, 2); insertNode(&head, 3); insertNode(&head, 4); insertNode(&head, 5); insertNode(&head, 6); cout << "Linked List before deletion:" << endl; printLinkedList(head); deletePrimeNodes(&head); cout << "\nLinked List after deletion:" << endl; printLinkedList(head); }
Output
If you run the above code, then you will get the following result.
Linked List before deletion: 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> Linked List after deletion: 6 -> 4 -> 1 ->
Conclusion
If you have any queries in the tutorial, mention them in the comment section.
- Related Articles
- Delete all the even nodes from a Doubly Linked List in C++
- Delete all Prime Nodes from a Singly Linked List in C++
- Delete all Non-Prime Nodes from a Singly Linked List in C++
- Delete all the nodes from a doubly linked list that are smaller than a given value in C++
- Delete all the nodes from the doubly linked list that are greater than a given value in C++
- Product of all prime nodes in a Singly Linked List in C++
- Delete a node in a Doubly Linked List in C++
- Program to delete n nodes after m nodes from a linked list in Python
- Delete alternate nodes of a Linked List in C++
- Delete N nodes after M nodes of a linked list in C++?
- Delete a Doubly Linked List node at a given position in C++
- Delete N nodes after M nodes of a linked list in C++ program
- Python program to rotate doubly linked list by N nodes
- Golang program to count the number of nodes in a doubly linked list.
- Python program to delete a new node from the beginning of the doubly linked list
