用C语言实现顺序栈实现字符串逆序
时间: 2024-09-20 13:17:22 浏览: 43
在C语言中,我们可以使用数组来实现顺序栈结构,并利用栈的基本操作(压入元素、弹出元素)来逆序字符串。以下是一个简单的步骤:
1. 首先,创建一个足够大的字符数组作为栈,用于存储字符串。
2. 将输入的字符串逐个压入栈中。因为字符串在内存中是连续的,所以可以直接通过索引来访问。
3. 当所有字符都压入栈后,开始弹出元素并将其添加到一个新的字符串中,形成逆序字符串。
下面是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STACK_SIZE 100
// 定义栈结构体
typedef struct {
char stack[MAX_STACK_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *s) {
s-1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return (s->top == -1);
}
// 判断栈是否已满
int isFull(Stack *s) {
return (s->top == MAX_STACK_SIZE - 1);
}
// 入栈操作
void push(Stack *s, char c) {
if (!isFull(s)) {
s->stack[++s->top] = c;
} else {
printf("Stack overflow.\n");
}
}
// 出栈操作(将字符添加到新字符串中)
char pop(Stack *s, char reversed[]) {
if (isEmpty(s)) {
printf("Stack underflow.\n");
return '\0';
} else {
reversed[s->top--] = s->stack[0];
return s->stack[0];
}
}
// 主函数示例:逆序输入字符串
int main() {
Stack s;
char input[100], reversed[100] = {0};
init(&s);
// 输入字符串
scanf("%s", input);
// 逆序字符串
for (int i = strlen(input) - 1; i >= 0; i--) {
push(&s, input[i]);
}
while (!isEmpty(&s)) {
pop(&s, reversed);
}
printf("Reversed string: %s\n", reversed);
return 0;
}
```
阅读全文