# Answered! Write a method rotate that moves the value at the front of a linked list of integers to the end of the list. For example,…

JAVA

Write a method rotate that moves the value at the front of a linked list of integers to the end of the list. For example, if a variable called list stores the following sequence of values: [8, 23, 19, 7, 45, 98, 102, 4] Then the call of list, rotate ():should move the value 8 from the front of the list to the back of the list, yielding this sequence of values: [23, 19, 7, 45, 98, 102, 4, 8] The other values in the list should retain the same order as in the original list. If the method Is called for a list of 0 or 1 elements it should have no effect on the list. You are not allowed to construct any new nodes to solve this problem and you are not allowed to change any of the integer values stored in the nodes. You must solve the problem by rearranging the links of the list.

## Expert Answer

for rotate() method implementation I did not create any new MySLLNode object but reference variables of it.

MySingleLinkedList.java

public class MySingleLinkedList{
private MySLLNode head=null;
public static void main(String a[]){
MySingleLinkedList msl = new MySingleLinkedList();
int arList[] = {8,23,19,7,45,98,102,4};
for(int i=0;i<arList.length;i++)
msl.add(new MySLLNode(arList[i]));
msl.print();
msl.rotate();
msl.print();
msl.rotate();
msl.print();
}
//prints linked list
public void print(){
MySLLNode test = head;
while(test!=null){
System.out.print(” “+test.getData());
test = test.getNext();
}
System.out.println();
}
//rotates the linked list by one element
public void rotate(){
if(head==null)
return;
else if(head.getNext()==null)
return;
MySLLNode node = head,test;
head = head.getNext();
node.setNext(null);
test = head;
while(test.getNext()!=null){
test = test.getNext();
}
test.setNext(node);
}
//adds element to currently existing linked list.
public void add(MySLLNode node){
if(head==null){
head = node;
}
else{
MySLLNode test = head;
while(test.getNext()!=null){
test = test.getNext();
}
test.setNext(node);
}
}
}

MySLLNode.java

class MySLLNode{
private int data;
private MySLLNode next;
public MySLLNode(int data){
this.data = data;
next = null;
}
public MySLLNode(int data,MySLLNode next){
this.data = data;
this.next = next;
}
public int getData(){
return data;
}
public void setData(int data){
this.data = data;
}
public MySLLNode getNext(){
return next;
}
public void setNext(MySLLNode next){
this.next = next;
}
}