首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言字串逆序四種方法:雙指針交換、遞迴棧、遞迴交換、標準庫

     編輯:關於C

方法一:雙指針原地交換 (最優、迭代)

char *reverse(char *s) {
    if (!s) return NULL;
    char *l = s, *r = s;
    while (*r) r++; r--; // r 指向最後一字元 (非 \0)
    while (l < r) {
        char tmp = *l; *l = *r; *r = tmp;
        l++; r--;
    }
    return s;
}

方法二:遞迴利用調用棧 (輸出逆序、不修改原字串)

void reverse_print(const char *s) {
    if (!*s) return;
    reverse_print(s+1);
    putchar(*s);
}
// 原理: 先遞迴到末尾,回溯時依序輸出 -> 逆序

方法三:遞迴原地交換 (教學展示)

void reverse_rec_swap(char *s, int len) {
    if (len <= 1) return;
    char tmp = s[0];
    s[0] = s[len-1];
    s[len-1] = '\0'; // 暫時截斷,遞迴處理中間
    reverse_rec_swap(s+1, len-2);
    s[len-1] = tmp; // 恢復
}

方法四:標準庫 (C++)

#include 
#include 
std::reverse(str.begin(), str.end()); // C++ 僅供參考

測試主程式

int main() {
    char s1[] = "abcdef";
    reverse(s1);
    puts(s1); // fedcba
    
    char s2[] = "hello";
    reverse_print(s2); // olleh
    putchar('\n');
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved