循环右移程序可以通过以下步骤运行:
定义一个临时变量,用于存储数组的最后一个元素。
从数组的倒数第二个元素开始,将每个元素向后移动一位,直到第一个元素。
将临时变量的值赋给第一个元素,完成循环右移。
```c
include
void rotateRight(int arr[], int n) {
int temp = arr[n - 1]; // 定义临时变量存储最后一个元素
for (int i = n - 1; i > 0; i--) {
arr[i] = arr[i - 1]; // 将每个元素向后移动一位
}
arr = temp; // 将最后一个元素赋给第一个元素
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr);
printf("原始数组: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
rotateRight(arr, n);
printf("循环右移后的数组: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
原始数组: 1 2 3 4 5
循环右移后的数组: 5 1 2 3 4
```
这个程序的时间复杂度为O(N),并且只使用了两个附加变量(临时变量和循环变量)。
如果你需要处理字符串或其他数据类型,可以相应地调整代码。例如,对于字符串的循环右移,可以使用类似的方法,但需要处理字符数组的复制和拼接。