Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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();
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
656 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can reverse a queue by using a stack.

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.

Here's an example:

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...