I have written code for the basic implementation of a Deque in C++ using Array(pointer). Please review my code and suggest ways to make it simpler, compact, and efficient. Also would appreciate feedback on any aspect of my code.
#include <iostream>
#include <cstdlib>
class queue
{
private:
int size = 0, front = -1, rear = -1;
float *arr;
public:
queue(int inputSize)
{
size = inputSize;
arr = (float *)malloc(size * sizeof(float));
}
int isEmpty(queue *q)
{
if (q->front == q->rear)
{
return 1;
}
return 0;
}
int isFull(queue *q)
{
if (q->rear == q->size - 1)
{
return 1;
}
return 0;
}
void enqueueR(queue *q, int data)
{
if (isFull(q))
{
std::cout << data << " cannot be entered as Queue is Full\n";
}
else
{
q->rear++;
q->arr[q->rear] = data;
}
}
void enqueueF(queue *q, int data)
{
if (isFull(q))
{
std::cout << data << " cannot be entered as Queue is Full\n";
}
else
{
for (int i = front + 1; i < size; i++)
{
q->arr[i + 1] = q->arr[i];
}
q->arr[q->front + 1] = data;
q->rear++;
}
}
void dequeueF(queue *q)
{
if (isEmpty(q))
{
std::cout << "Queue is Empty\n";
}
else
{
q->front++;
std::cout << "The removed value is: " << q->arr[q->front] << "\n";
}
}
void dequeueR(queue *q)
{
if (isEmpty(q))
{
std::cout << "Queue is Empty\n";
}
else
{
std::cout << "The removed value is: " << q->arr[q->rear] << "\n";
q->rear--;
}
}
void queueTraversal(queue *q)
{
std::cout << "The queue is as follows:\n";
for (int i = front + 1; i <= rear; i++)
{
std::cout << q->arr[i] << " ";
}
std::cout << std::endl;
}
};