# How to remove a specific element from Queue

• Last Updated : 29 Sep, 2021

Given a queue q[] and an integer K, the task is to define a method to remove a specific element from the queue q[]. If there are multiple occurrences of element K, then, remove the first one from the queue q[].

Examples:

Input: q[] = {10, 20, 30, 40, 50, 60}, K = 30
Output: {10, 20, 40, 50, 60}
Explanation: After removal of 30, the queue becomes {10, 20, 40, 50, 60}.

Input: q[] = {1, 2, 3, 3}, K = 3
Output: {1, 2, 3}
Explanation: After removal of the first occurrence of 3, the queue becomes {1, 2,  3}.

Approach: The idea is to create a temporary queue ref[] and store all the elements in it, until K is found. Then, remove K from the original queue q[], and insert the remaining elements back into the queue q[]. Follow the steps below to solve the problem:

Below is the implementation of the above approach.

## C++

 // C++ program for the above approach. #include using namespace std;   // Function to remove an element from // the queue void remove(int t, queue& q) {       // Helper queue to store the elements     // temporarily.     queue ref;     int s = q.size();     int cnt = 0;       // Finding the value to be removed     while (q.front() != t and !q.empty()) {         ref.push(q.front());         q.pop();         cnt++;     }       // If element is not found     if (q.empty()) {         cout << "element not found!!" << endl;         while (!ref.empty()) {               // Pushing all the elements back into q             q.push(ref.front());             ref.pop();         }     }       // If element is found     else {         q.pop();         while (!ref.empty()) {               // Pushing all the elements back into q             q.push(ref.front());             ref.pop();         }         int k = s - cnt - 1;         while (k--) {               // Pushing elements from front of q to its back             int p = q.front();             q.pop();             q.push(p);         }     } }   // Function to print all the elements // of the queue. void print(queue qr) {     while (!qr.empty()) {         cout << qr.front() << " ";         qr.pop();     }     cout << endl; }   // Driver Code int main() {     queue q;       // Pushing into the queue     q.push(10);     q.push(20);     q.push(30);     q.push(40);     q.push(50);     q.push(60);     print(q);       // Removing 39 from the queue     remove(39, q);     print(q);       // Removing 30 from the queue     remove(30, q);     print(q);     return 0; }

## C#

 // C# program for the above approach. using System; using System.Collections; public class GFG{             // Function to remove an element from // the queue static Queue q = new Queue(); static void remove_(int t) {       // Helper queue to store the elements     // temporarily.     Queue reff = new Queue();     int s = q.Count;     int cnt = 0;       // Finding the value to be removed     while ((int)q.Count != 0 && (int)q.Peek() != t) {                 reff.Enqueue(q.Peek());         q.Dequeue();         cnt++;     }       // If element is not found     if (q.Count == 0) {         Console.WriteLine("element not found!!");                     while (reff.Count != 0) {                           // Pushing all the elements back into q             q.Enqueue(reff.Peek());             reff.Dequeue();         }     }       // If element is found     else {         q.Dequeue();         while (reff.Count != 0) {               // Pushing all the elements back into q             q.Enqueue(reff.Peek());             reff.Dequeue();         }         int k = s - cnt - 1;         while (k-- >0) {               // Pushing elements from front of q to its back             int p = (int)q.Peek();             q.Dequeue();             q.Enqueue(p);         }     } }   // Function to print all the elements // of the queue. static void print() {     Queue qr = (Queue)q.Clone();     while (qr.Count != 0) {         Console.Write(qr.Peek()+ " ");         qr.Dequeue();     }       Console.WriteLine(); }   // Driver Code static public void Main (){       // Pushing into the queue     q.Enqueue(10);     q.Enqueue(20);     q.Enqueue(30);     q.Enqueue(40);     q.Enqueue(50);     q.Enqueue(60);         print();       // Removing 39 from the queue     remove_(39);     print();       // Removing 30 from the queue     remove_(30);     print(); } }   // This code is contributed by Dharanendra L V.

Output

10 20 30 40 50 60