利用栈实现字符串的逆序c语言
时间: 2023-12-30 21:01:54 浏览: 103
代码是什么?
下面是一份利用栈实现字符串逆序的 C 语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
// 定义 Stack 结构体
typedef struct {
char data[MAX_LEN];
int top;
} Stack;
// 初始化栈
void init(Stack *stack) {
stack->top = -1;
}
// 入栈
void push(Stack *stack, char ch) {
if (stack->top == MAX_LEN - 1) {
printf("Stack overflow\n");
exit(1);
}
stack->data[++stack->top] = ch;
}
// 出栈
char pop(Stack *stack) {
if (stack->top == -1) {
printf("Stack underflow\n");
exit(1);
}
return stack->data[stack->top--];
}
// 字符串逆序
void reverse(char *str) {
Stack stack;
init(&stack);
// 将字符串中每个字符入栈
for (int i = 0; i < strlen(str); i++) {
push(&stack, str[i]);
}
// 出栈并输出字符,即可得到逆序字符串
for (int i = 0; i < strlen(str); i++) {
str[i] = pop(&stack);
}
}
int main() {
char str[MAX_LEN];
printf("请输入一个字符串:\n");
scanf("%s", str);
reverse(str);
printf("逆序后的字符串:%s\n", str);
return 0;
}
```
注意,此代码可能不是最优雅的实现方式,但它可以帮助你理解如何利用栈实现字符串逆序的思路。
阅读全文