Rotate List
推荐一个作者详解:作者:Echo__wwW
链接:https://leetcode-cn.com/problems/rotate-list/solution/qing-xi-yi-dong-de-javajie-fa-by-echo__w-82l4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
个人微改:
class ListNode10{
int val;
ListNode10 next;
ListNode10(){}
ListNode10(int val){this.val = val;}
ListNode10(int val, ListNode10 next) { this.val = val; this.next = next; }
public void addNode(int e) {
ListNode10 newNode = new ListNode10(e);
if(this.next==null) {
this.next=newNode;
}else {
this.next.addNode(e);
}
}
public void print() {
System.out.print(this.val);
if(this.next!=null) {
System.out.print("-->");
this.next.print();
}
}
}
public class RotateList {
public static void main(String[] args) {
System.out.println("please enter the capcity of your linked list : ");
ListNode10 L1 = new ListNode10(0);
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
System.out.println("please enter your linked list value :");
int a[] = new int[m];
for(int i=0;i<m;i++) {
a[i]=sc.nextInt();
L1.addNode(a[i]);
}
System.out.println("please enter your value of K :");
int k = sc.nextInt();
(L1=rotateRight(L1.next,k)).print();
sc.close();
}
public static ListNode10 rotateRight(ListNode10 head,int k) {
if(head == null || head.next == null) {
return head;
}
int len = 1,index;
ListNode10 temp = head,newHead;
while(temp.next != null) {
len++;
temp = temp.next;
}
temp.next = head;
k %= len;
index = len - k;
while(index-- > 0) {
temp = temp.next;
}
newHead = temp.next;
temp.next = null;
return newHead;
}
}

本文详细介绍了如何使用Java实现链表的右旋操作。首先定义了ListNode类用于构建链表,然后通过一个rotateRight方法实现了根据给定的k值旋转链表。该方法首先计算链表长度,接着构建新的头节点,最后进行旋转操作。示例代码清晰地展示了整个过程。
4782

被折叠的 条评论
为什么被折叠?



