数据结构c代码实现:对于给定的字符串进行循环左移操作,即已知字符序列S,经过算法处理后输出循环左移K位后的序列。
时间: 2024-12-12 20:28:19 浏览: 6
在C语言中,我们可以使用数组和指针的概念来实现字符串的循环左移操作。这里是一个简单的例子,假设我们有一个字符数组`S`存储了字符串,以及整数`K`表示需要移动的位数。
```c
#include <stdio.h>
#include <string.h>
void circular_left_shift(char *S, int K) {
// 首先检查字符串是否为空或者K是否大于0
if (S == NULL || K <= 0) return;
// 获取字符串长度
int len = strlen(S);
// 如果K大于字符串长度,取模运算使得K小于等于len
K = K % len;
// 创建一个新的临时数组,用于存放结果
char temp[len + 1];
// 将S的最后一个K个字符复制到temp数组
for (int i = 0; i < K; i++) {
temp[i] = S[len - 1 - i];
}
// 将S的剩余部分复制到temp数组
for (int i = K; i < len; i++) {
temp[i] = S[i];
}
// 设置temp数组的最后一个元素为'\0',以确保它是一个有效的字符串
temp[len] = '\0';
// 将temp数组的内容复制回原字符串S
for (int i = 0; i < len; i++) {
S[i] = temp[i];
}
}
// 测试函数
int main() {
char S[] = "Hello, World!";
int K = 5;
circular_left_shift(S, K);
printf("Circular left shift of %s by %d positions is: %s\n", S, K, S);
return 0;
}
```
这个程序会将输入字符串`S`向左循环移动`K`位,并输出结果。运行上述代码,你会看到"World!Hello,"作为输出。
阅读全文