【问题描述】
顺序表中有N(N>0)个整数,在不将顺序表中数据进行整体赋值的前提下,将每个整数循环左移M(M>=0)个位置。
即顺序表中数据由(a1a2a3...an)变换为(am+1....ana1a2...am)。
考虑如何让程序移动数据的次数尽量少。
【输入形式】
第一行输入N(1<=N<=100)、M(M>=0);
第二行输入N个整数。
【输出形式】
输出顺序表中循环左移M位以后的整数序列(整数之间空格分隔)。
【样例输入1】
8 4
1 2 3 4 5 6 7 8
【样例输出1】
5 6 7 8 1 2 3 4
【样例输入2】
4 6
1 2 3 4
【样例输出2】
3 4 1 2
【样例输入3】
1 0
10
【样例输出3】
10
对于顺序表的循环左移,我们应该采用空间移动较少的算法,所以n次左移就移动顺序表n次空间的算法就不采用。
我们需要新申请一个临时空间的顺序表 s 来存放左移前的元素,顺序表的长度为 L->lenght 就足够。
方法如下:
当左移的次数 m 大于顺序表的长度时,我们就没必要左移 m 次,只需要移动 m%L->lenght 次就够了&#