91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C語言實現字符串逆序的技巧是什么

小樊
82
2024-08-27 04:47:35
欄目: 編程語言

在C語言中,實現字符串逆序的技巧主要包括以下幾點:

  1. 使用雙指針法:創建兩個指針,一個指向字符串的起始位置,另一個指向字符串的結束位置。然后交換這兩個指針所指向的字符,并將起始位置的指針向后移動一位,結束位置的指針向前移動一位,直到兩個指針相遇或者錯過彼此。
#include<stdio.h>
#include<string.h>

void reverse_string(char *str) {
    int len = strlen(str);
    char temp;
    for (int i = 0, j = len - 1; i < j; i++, j--) {
        temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
}

int main() {
    char str[] = "Hello, World!";
    printf("Original string: %s\n", str);
    reverse_string(str);
    printf("Reversed string: %s\n", str);
    return 0;
}
  1. 使用遞歸:如果你喜歡使用遞歸方法,可以通過遞歸地反轉子字符串來實現字符串逆序。
#include<stdio.h>
#include<string.h>

void reverse_substring(char *start, char *end) {
    if (start >= end) {
        return;
    }
    char temp = *start;
    *start = *end;
    *end = temp;
    reverse_substring(start + 1, end - 1);
}

void reverse_string(char *str) {
    int len = strlen(str);
    reverse_substring(str, str + len - 1);
}

int main() {
    char str[] = "Hello, World!";
    printf("Original string: %s\n", str);
    reverse_string(str);
    printf("Reversed string: %s\n", str);
    return 0;
}
  1. 使用棧:將字符串的字符依次入棧,然后從棧中依次出棧并賦值給原字符串,這樣就實現了字符串逆序。
#include<stdio.h>
#include<string.h>
#include <stdlib.h>

typedef struct Stack {
    int top;
    unsigned capacity;
    char *array;
} Stack;

Stack *create_stack(unsigned capacity) {
    Stack *stack = (Stack *)malloc(sizeof(Stack));
    stack->capacity = capacity;
    stack->top = -1;
    stack->array = (char *)malloc(stack->capacity * sizeof(char));
    return stack;
}

int is_full(Stack *stack) {
    return stack->top == stack->capacity - 1;
}

int is_empty(Stack *stack) {
    return stack->top == -1;
}

void push(Stack *stack, char item) {
    if (is_full(stack)) {
        return;
    }
    stack->array[++stack->top] = item;
}

char pop(Stack *stack) {
    if (is_empty(stack)) {
        return '\0';
    }
    return stack->array[stack->top--];
}

void reverse_string(char *str) {
    int len = strlen(str);
    Stack *stack = create_stack(len);
    for (int i = 0; i < len; i++) {
        push(stack, str[i]);
    }
    for (int i = 0; i < len; i++) {
        str[i] = pop(stack);
    }
}

int main() {
    char str[] = "Hello, World!";
    printf("Original string: %s\n", str);
    reverse_string(str);
    printf("Reversed string: %s\n", str);
    return 0;
}

這些技巧都可以實現字符串逆序,你可以根據自己的需求和喜好選擇合適的方法。

0
仁布县| 黄骅市| 城市| 睢宁县| 朝阳市| 博客| 西昌市| 义马市| 靖江市| 邯郸市| 吉水县| 涞水县| 曲阜市| 齐齐哈尔市| 常德市| 腾冲县| 晋城| 黑龙江省| 平果县| 荔波县| 左贡县| 多伦县| 牡丹江市| 铜山县| 翁牛特旗| 公主岭市| 开鲁县| 淄博市| 乐清市| 马鞍山市| 长兴县| 乌审旗| 山阳县| 辽阳县| 石河子市| 定结县| 马山县| 长丰县| 安庆市| 开远市| 葫芦岛市|