This is not a HW or assignment. This is something i'm practicing myself.
Given a queue, write a Reverse method reverses elements of a queue. MyQueue remains unchanged.
Signature:
public Queue<T> reverse(Queue<T> myQueue) {
Note: It is unknown if the Queue is made using nodes or array.
The queue has methods already implemented, that we can use:
void enqueue(T element)
T dequeue();
boolean isFull();
boolean isEmpty();
int size();
You can reverse a queue by using a stack. The append and serve methods of the queue are to add and remove elements of that queue.
We know that a queue is a FIFO structure, and random access of elements is not allowed, so it is not possible to reverse the queue in-place so we need another data structure in which we could store the elements of the queue in such a manner that while inserting the elements back to the queue the order of elements is ...
Here's how in Java:
public void reverse(Queue q)
{
Stack s = new Stack(); //create a stack
//while the queue is not empty
while(!q.isEmpty())
{ //add the elements of the queue onto a stack
s.push(q.serve());
}
//while the stack is not empty
while(!s.isEmpty())
{ //add the elements in the stack back to the queue
q.append(s.pop());
}
}
The append and serve methods of the queue are to add and remove elements of that queue.
A queue has elements:
1 2 3 4
When the elements get added to a stack, the number 1 will be at the bottom of the list and 4 at the top:
1 2 3 4 <- top
Now pop the stack and put the elements back in the queue:
4 3 2 1
I hope this helped.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With