# 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<``int``>& q)` `{`   `    ``// Helper queue to store the elements` `    ``// temporarily.` `    ``queue<``int``> 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<``int``> qr)` `{` `    ``while` `(!qr.empty()) {` `        ``cout << qr.front() << ``" "``;` `        ``qr.pop();` `    ``}` `    ``cout << endl;` `}`   `// Driver Code` `int` `main()` `{` `    ``queue<``int``> 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;` `}`

## Java

 `// Java program for the above approach.`   `import` `java.util.*;`   `class` `GFG{`   `// Function to remove an element from` `// the queue` `static` `Queue q;` `static` `void` `remove(``int` `t)` `{`   `    ``// Helper queue to store the elements` `    ``// temporarily.` `    ``Queue ref = ``new` `LinkedList<>();` `    ``int` `s = q.size();` `    ``int` `cnt = ``0``;`   `    ``// Finding the value to be removed` `    ``while` `(!q.isEmpty() && q.peek() != t) {` `        ``ref.add(q.peek());` `        ``q.remove();` `        ``cnt++;` `    ``}`   `    ``// If element is not found` `    ``if` `(q.isEmpty()) {` `        ``System.out.print(``"element not found!!"` `+``"\n"``);` `        ``while` `(!ref.isEmpty()) {`   `            ``// Pushing all the elements back into q` `            ``q.add(ref.peek());` `            ``ref.remove();` `        ``}` `    ``}`   `    ``// If element is found` `    ``else` `{` `        ``q.remove();` `        ``while` `(!ref.isEmpty()) {`   `            ``// Pushing all the elements back into q` `            ``q.add(ref.peek());` `            ``ref.remove();` `        ``}` `        ``int` `k = s - cnt - ``1``;` `        ``while` `(k-- >``0``) {`   `            ``// Pushing elements from front of q to its back` `            ``int` `p = q.peek();` `            ``q.remove();` `            ``q.add(p);` `        ``}` `    ``}` `}`   `// Function to print all the elements` `// of the queue.` `static` `void` `print()` `{` `    ``Queue qr = ``new` `LinkedList<>(q);` `    ``while` `(!qr.isEmpty()) {` `        ``System.out.print(qr.peek()+ ``" "``);` `        ``qr.remove();` `    ``}`   `    ``System.out.println();` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``q = ``new` `LinkedList<>();`   `    ``// Pushing into the queue` `    ``q.add(``10``);` `    ``q.add(``20``);` `    ``q.add(``30``);` `    ``q.add(``40``);` `    ``q.add(``50``);` `    ``q.add(``60``);` `    ``print();`   `    ``// Removing 39 from the queue` `    ``remove(``39``);` `    ``print();`   `    ``// Removing 30 from the queue` `    ``remove(``30``);` `    ``print();` `}` `}`   `// This code is contributed by 29AjayKumar`

## 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