Implement Queue using array
Problem​
Implement a Queue using an Array. Queries in the Queue are of the following type:
- 1 x (a query of this type means pushing 'x' into the queue)
 - 2 (a query of this type means to pop element from queue and print the poped element)
 
Examples:​
Example 1:
Input:
Q = 5
Queries = 1 2 1 3 2 1 4 2
Output: 2 3
Explanation:
In the first test case for query 
1 2 the queue will be {2}
1 3 the queue will be {2 3}
2   poped element will be 2 the 
    queue will be {3}
1 4 the queue will be {3 4}
2   poped element will be 3 
Example 2:
Input:
Q = 4
Queries = 1 3 2 2 1 4   
Output: 3 -1
Explanation:
In the second testcase for query 
1 3 the queue will be {3}
2   poped element will be 3 the
    queue will be empty
2   there is no element in the
    queue and hence -1
1 4 the queue will be {4}. 
- Expected Time Complexity: for both push() and pop()
 - Expected Auxiliary Space: for both push() and pop()
 
Constraints:​
Solution​
Python​
def __init__(self):
        self.q = []
def push(self, x):
        self.q.append(x)
def pop(self): 
    if self.q:
        return self.q.pop(0)
    else:
        return -1
Java​
void push(int x) {
    if (rear == arr.length) {
        return;
    }
    arr[rear] = x;
    rear++;
} 
int pop() {
    if (front == rear) {
        return -1; 
    }
    int element = arr[front];
    for (int i = 0; i < rear - 1; i++) {
        arr[i] = arr[i + 1];
    }
    rear--;
    return element;
} 
C++​
void MyQueue :: push(int x) {
    if ((rear + 1) % 100005 == front) {
        return;
    }
    arr[rear] = x;
    rear = (rear + 1) % 100005;
}
int MyQueue :: pop() {
    if (front == rear) {
        return -1; 
    }
    int element = arr[front];
    front = (front + 1) % 100005;
    
    return element;     
}
C​
void push(struct MyQueue *queue, int x) {
    if ((queue->rear + 1) % MAX_SIZE == queue->front) {
        return;
    }
    queue->arr[queue->rear] = x;
    queue->rear = (queue->rear + 1) % MAX_SIZE;
}
int pop(struct MyQueue *queue) {
    if (queue->front == queue->rear) {
        printf("Queue is empty. Cannot pop element.\n");
        return -1;
    }
    int element = queue->arr[queue->front];
    queue->front = (queue->front + 1) % MAX_SIZE;
    return element;
}
- Time Complexity: for both push() and pop()
 - Auxiliary Space: for both push() and pop()