Learn-dsa..in 30 days!



























CC-8 : Rotate Queue nodes.

Description:

Given a Queue, rotate its nodes by n places.

Test cases and expected outputs:

Input Parameters Expected outputs
QueuePriority queue=new QueuePriority();
queue.addByPriority(99);
queue.addByPriority(14);
queue.addByPriority(77);
queue.addByPriority(34);
queue.addByPriority(21);
queue.addByPriority(82);
QueueRotate queueRotate=new QueueRotate();
queueRotate.QueueRotate(queue, 3);
Queue nodes: 14 <- 21 <- 34 <- 77 <- 99
After rotation:
Queue nodes: 77 <- 99 <-14 <- 21 <- 34
queueRotate.QueueRotate(queue, 5); Queue nodes: 34 <-44<-55<-77<- 99
After rotation:
Queue nodes: 34 <-44<-55<-77<- 99
queueRotate.QueueRotate(queue, 10); Queue nodes: 34 <-44<-55<-77<- 99
After rotation:
Queue nodes: 34 <-44<-55<-77<- 99
queueRotate.QueueRotate(queue, 12); Queue nodes: 34 <-44<-55<-77<- 99
After rotation:
Queue nodes: 55<-77<- 99<-34 <-44

Pseudocode:

If we have to rotate n nodes, n may be greater than size of queue, so Calculate effective nodesToBeRotated as (n % queue.size()).
Iterate through Queue nodesToBeRotated times using for loop and remove elements from start of Queue and add the same to the end of the Queue.

Code:

public Queue< Integer > QueueRotate(Queue< Integer > queue, int n) {
	int nodesToBeMoved= n % queue.size();
	for (int cnt=0; cnt < nodesToBeMoved; cnt++) {
		queue.add(queue.remove());
	}
	return queue;
}

Click here to download and run code and test cases !