2013-06-19 41 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-或類似的東西。

相關問題