/* 將數組arr循環右移size位 */
void CMR(int *p, int len, int size)
{
int i, j;
int temp;
if(size<1 || size>=len)
return;
for(i=0,j=len-size-1; i<j; i++,j--)
{
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
for(i=len-size,j=len-1; i<j; i++,j--)
{
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
for(i=0; i<len/2; i++)
{
temp = *(p+i);
*(p+i) = *(p+len-1-i);
*(p+len-1-i); = temp;
}
}
void main()
{
int i;
int arr[] = {1,2,3,4,5};
int len = 5;
int size = 1;
printf("before move : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
CMR(arr, len, size);
printf("after moved : ");
for(i=0; i<len; i++)
printf("%d ", arr[i]);
printf("\n");
}