C语言顺序栈存放字符串
时间: 2023-05-25 09:04:26 浏览: 271
栈的顺序存储
以下是使用顺序栈存放字符串的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
typedef struct Stack {
char data[MAX];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
int push(Stack *s, char ch) {
if (s->top == MAX - 1) { // 栈满
return 0;
}
s->data[++s->top] = ch;
return 1;
}
int pop(Stack *s, char *ch) {
if (s->top == -1) { // 栈空
return 0;
}
*ch = s->data[s->top--];
return 1;
}
int main() {
Stack s;
init(&s);
char str[] = "hello, world!";
int len = strlen(str);
for (int i = 0; i < len; i++) {
push(&s, str[i]);
}
printf("Reverse string: ");
char ch = ' ';
while (pop(&s, &ch)) {
printf("%c", ch);
}
printf("\n");
return 0;
}
```
这个例子中,我们使用了一个 `Stack` 结构体来表示顺序栈,其中 `data` 数组用于存放字符,`top` 表示栈顶索引。`init` 函数用于初始化顺序栈,`push` 函数用于入栈,`pop` 函数用于出栈。在 `main` 函数中,我们将一个字符串逐个字符地入栈,并在最后逆序输出。
阅读全文