我想问你,如果你知道如何移动数组中的字符串位置。我想实现这样的事情。在一个数组中移动字符串位置
如果= 1
1 2 0 0 0 0
如果如果A = 2
0 0 1 2 0 0
= 3
0 0 0 0 1 2
我没有代码,到现在为止我只想要一些想法。
我想问你,如果你知道如何移动数组中的字符串位置。我想实现这样的事情。在一个数组中移动字符串位置
如果= 1
1 2 0 0 0 0
如果如果A = 2
0 0 1 2 0 0
= 3
0 0 0 0 1 2
我没有代码,到现在为止我只想要一些想法。
#include <stdio.h>
#include <string.h>
/*
void rotate_right(char *str, size_t n){
size_t len = strlen(str);
char temp[n %= len];
memcpy(temp, str + len - n, n);
memmove(str + n, str, len - n);
memcpy(str, temp, n);
}
*/
void rotate_right1(char *str){
size_t len = strlen(str);
char temp = str[len-1];
memmove(str + 1, str, len - 1);
str[0] = temp;
}
void rotate_right(char *str, size_t n){
while(n--)
rotate_right1(str);
}
int main(void){
char data[] = "120000";
char wk[sizeof(data)];
int a;
for(a=1;a<=3;++a){
strcpy(wk, data);
rotate_right(wk, 2*(a-1));
printf("%s\n", wk);
}
return 0;
}
是的,我想要那样的东西。谢谢!! – dali1985
我加入了这个问题 - 这是轮班还是轮换?如果移位,你应该从末尾开始运行数组,以复制与当前位置差异为a的单元格。 喜欢的东西:
for (i=N;i>=a;i--)
{
array[i]=array[i-a];
}
,如果它是圆形的,你应该找到一种方法来更新所需要的位置,例如,如果我 - 一个小则0,则有N-或类似的东西。
**“哪里可以找到示例”** ...请求链接列表不是Stack Overflow的用途。 – meagar
谷歌会给你任何类型的很好的交换算法。 –
'a'代表什么?当'a == 1.5'和字符串是'0 1 2 0 0 0'?或者你只看到数组[0]和数组[1]时,会发生这种情况吗? – vvy