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

Categories

0 votes
632 views
in Technique[技术] by (71.8m points)

java - Reverse method reverses elements of a queue

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

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

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.8k users

...