C++ Queue Exercises: Remove all odd elements from a queue
C++ Queue: Exercise-16 with Solution
Write a C++ program to remove all odd elements from a queue.
Sample Solution:
C Code:
#include <iostream>
#include <map>
#include <cmath>
using namespace std;
const int MAX_SIZE = 100;
class Queue {
private:
int front; // Index of the front element in the queue
int rear; // Index of the rear element in the queue
int arr[MAX_SIZE]; // Array to hold queue elements
public:
Queue() {
front = -1; // Initializing front index to -1
rear = -1; // Initializing rear index to -1
}
bool isFull() {
return (rear == MAX_SIZE - 1); // Checks if the queue is full
}
bool isEmpty() {
return (front == -1 && rear == -1); // Checks if the queue is empty
}
void enqueue(int x) {
if (isFull()) {
cout << "Error: Queue is full" << endl; // Display error if the queue is full
return;
}
if (isEmpty()) {
front = 0;
rear = 0;
} else {
rear++;
}
arr[rear] = x; // Adds an element to the rear of the queue
}
void dequeue() {
if (isEmpty()) {
cout << "Error: Queue is empty" << endl; // Display error if the queue is empty
return;
}
if (front == rear) {
front = -1;
rear = -1;
} else {
front++;
}
}
int peek() {
if (isEmpty()) {
cout << "Error: Queue is empty" << endl; // Display error if the queue is empty
return -1;
}
return arr[front]; // Returns the element at the front of the queue
}
void display() {
if (isEmpty()) {
cout << "Error: Queue is empty" << endl; // Display error if the queue is empty
return;
}
cout << "Queue elements are: ";
for (int i = front; i <= rear; i++) {
cout << arr[i] << " "; // Displays all elements in the queue
}
cout << endl;
}
void remove_odd_elements(Queue& q) {
Queue temp; // Temporary queue to hold even elements
while (!q.isEmpty()) {
int x = q.peek();
q.dequeue();
if (x % 2 == 0) {
temp.enqueue(x); // Enqueue even elements to the temp queue
}
}
while (!temp.isEmpty()) {
q.enqueue(temp.peek()); // Enqueue back even elements to the original queue
temp.dequeue();
}
}
};
int main() {
cout << "Initialize a Queue." << endl;
Queue q;
cout << "\nInsert some elements into the queue:" << endl;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
q.enqueue(6);
q.display();
cout << "\nRemove all odd numbers from the said queue:" << endl;
q.remove_odd_elements(q);
q.display();
return 0;
}
Sample Output:
Initialize a Queue. Insert some elements into the queue: Queue elements are: 1 2 3 4 5 6 Remove all odd numbers from the said queue: Queue elements are: 2 4 6
Flowchart:
CPP Code Editor:
Contribute your code and comments through Disqus.
Previous C++ Exercise: Remove all even elements from a queue.
Next C++ Exercise: Remove all duplicate elements from a queue.
What is the difficulty level of this exercise?
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/cpp-exercises/queue/cpp-queue-exercise-16.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics