实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(an−m⋯an−1a0a1⋯an−m−1)(最后m个数循环移至最前面的m个位置)。
void shift_loop(int *a,int n,int m)//move the number of m to end of a array. eg(m = 3):12345---->45123
{
int shift_count = 0;
int *temp_ptr = NULL,temp;
for(;shift_count < m;shift_count++)
{
temp_ptr = a;
for(;temp_ptr < a + n -1; temp_ptr++)//Reverse order
{
temp = *temp_ptr;
*temp_ptr = *(temp_ptr+1);
*(temp_ptr + 1) = temp;
}
}
}
void main(void)
{
int a[5] = {12,34,56,78,90};
shift_loop(a,5,2);
for(int i = 0;i < 5;i++)
{
printf("%d\t",a[i]);
}
}
==========================================================