类似于队的玩法,输入一个数字k,数组前k个元素从数组的左边出队,后面的元素依次往前站队,出队的k个元素,从队尾依次站回来。
思路
char arr[ ]="ABCDEFG";
需要旋转前3个元素
"ABCDEFG"
- 先将前三个元素逆序一下得到CBADEFG
- 将后面剩余元素也逆序得到CBAGFED
- 将CBAGFED整个再进行逆序得到DEFGABC
相关代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void reversal(char* left, char* right) {
while (left < right) {
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
void string_Reversal(char* p, int key) {
int lenth = strlen(p);
reversal(p, p+key-1);
reversal(p+key,p+lenth-1);
reversal(p, p + lenth - 1);
}
int main() {
char arr[] = "ABCDEFG";
int k = 3;
string_Reversal(arr, k);
printf("%s\n", arr);
return 0;
}