循环移位算法

来源:互联网 发布:网络规划设计师 没人考 编辑:程序博客网 时间:2024/04/30 00:46
#include <iostream>#include <string.h>#include <assert.h>static void Swap(char *p, char *q);static void Reverse(char *str, size_t i, size_t n);void String_Shift_Reverse(char *str, int n){    size_t len;    assert(NULL != str);    len = strlen(str);    if (n <=0 || n >= len) {        return;    }    Reverse(str, 0, n - 1);  //先翻转0~n-1的前部分    Reverse(str, n, len - 1);//再翻转n~len-1的后部分    Reverse(str, 0, len - 1);//最后翻转0~len整体部分}//交换函数static void Swap(char *p, char *q){    char tmp;    tmp = *p;    *p = *q;    *q = tmp;}//翻转函数static void Reverse(char *str, size_t i, size_t n){    size_t l, r;    for (l = i, r = n; l < r; l++, r--) {        Swap(&str[l], &str[r]);    }}int main(int argc, const char * argv[]) {    // insert code here...    std::cout << "Hello, World!\n";    char num[10] = {"123456789"};    for(int i = 0; i < 10; i++)    {        std::cout << num[i] << std::endl;    }    String_Shift_Reverse(num, 2);    for(int i = 0; i < 10; i++)    {        std::cout << num[i] << " ";    }    return 0;}

0 0
原创粉丝点击