C++程序 按块旋转链表
给定长度为n的链表和块长度 k ,通过一个数字 d ,以环形方式向右/向左旋转每个块。如果 d 为正数,则向右旋转,否则向左旋转。
示例:
输入: 1->2->3->4->5->6->7->8->9->NULL,
k = 3
d = 1
输出: 3->1->2->6->4->5->9->7->8->NULL
解释: 这里块的大小为3,朝右旋转(因为d是正数)1次。
输入: 1->2->3->4->5->6->7->8->9->10->
11->12->13->14->15->NULL,
k = 4
d = -1
输出: 2->3->4->1->6->7->8->5->10->11->
12->9->14->15->13->NULL
解释: 在链表的末尾,剩余的节点少于k,即在k为4时仅剩3个节点。同样需要根据d将这三个节点旋转。
这个想法是,如果d的绝对值大于k的值,则将链表旋转d % k次。如果d为0,则根本不需要旋转链表。
输出: