用c语言栈实现字符串反转
时间: 2023-10-11 08:08:43 浏览: 192
判断是否为反转字符串.zip
以下是使用C语言栈实现字符串反转的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, char c) {
if (is_full(s)) {
printf("Stack is full!\n");
exit(EXIT_FAILURE);
}
s->data[++(s->top)] = c;
}
char pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty!\n");
exit(EXIT_FAILURE);
}
return s->data[(s->top)--];
}
void reverse_string(char *str) {
Stack s;
s.top = -1;
int len = strlen(str);
for (int i = 0; i < len; i++) {
push(&s, str[i]);
}
for (int i = 0; i < len; i++) {
str[i] = pop(&s);
}
}
int main() {
char str[MAX_SIZE];
printf("Enter a string: ");
fgets(str, MAX_SIZE, stdin);
str[strcspn(str, "\n")] = '\0'; // remove newline character
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
在这个程序中,我们定义了一个栈结构体,包含一个字符数组和一个栈顶指针。然后我们实现了栈的基本操作:判断栈是否为空、判断栈是否已满、入栈和出栈。最后,我们定义了一个 `reverse_string` 函数,该函数接收一个字符串指针,使用栈将字符串反转,并将修改后的字符串指针返回。
在 `main` 函数中,我们从标准输入读取一个字符串,然后调用 `reverse_string` 函数将其反转,并输出结果。
阅读全文