我想問你,如果你知道如何移動數組中的字符串位置。我想實現這樣的事情。在一個數組中移動字符串位置
如果= 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