C语言实现字符串逆序的技巧是什么

   2024-10-01 8190
核心提示:在C语言中,实现字符串逆序的技巧主要包括以下几点:使用双指针法:创建两个指针,一个指向字符串的起始位置,另一个指向字符串

在C语言中,实现字符串逆序的技巧主要包括以下几点:

使用双指针法:创建两个指针,一个指向字符串的起始位置,另一个指向字符串的结束位置。然后交换这两个指针所指向的字符,并将起始位置的指针向后移动一位,结束位置的指针向前移动一位,直到两个指针相遇或者错过彼此。
#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;}
使用递归:如果你喜欢使用递归方法,可以通过递归地反转子字符串来实现字符串逆序。
#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;}
使用栈:将字符串的字符依次入栈,然后从栈中依次出栈并赋值给原字符串,这样就实现了字符串逆序。
#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;}

这些技巧都可以实现字符串逆序,你可以根据自己的需求和喜好选择合适的方法。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号