2013-06-19 26 views
-1

我想问你,如果你知道如何移动数组中的字符串位置。我想实现这样的事情。在一个数组中移动字符串位置

如果= 1

1 2 0 0 0 0 

如果如果A = 2

0 0 1 2 0 0 

= 3

0 0 0 0 1 2 

我没有代码,到现在为止我只想要一些想法。

+3

**“哪里可以找到示例”** ...请求链接列表不是Stack Overflow的用途。 – meagar

+0

谷歌会给你任何类型的很好的交换算法。 –

+1

'a'代表什么?当'a == 1.5'和字符串是'0 1 2 0 0 0'?或者你只看到数组[0]和数组[1]时,会发生这种情况吗? – vvy

回答

1
#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; 

} 
+0

是的,我想要那样的东西。谢谢!! – dali1985

0

我加入了这个问题 - 这是轮班还是轮换?如果移位,你应该从末尾开始运行数组,以复制与当前位置差异为a的单元格。 喜欢的东西:

for (i=N;i>=a;i--) 
{ 
array[i]=array[i-a]; 
} 

,如果它是圆形的,你应该找到一种方法来更新所需要的位置,例如,如果我 - 一个小则0,则有N-或类似的东西。

相关问题