数据结构c语言顺序栈将字符串zhangsan,wangwu,lisi入栈再依次弹出
时间: 2024-10-12 22:04:31 浏览: 6
在C语言中,我们可以使用数组作为基础数据结构来创建一个简单的顺序栈(也叫线性栈),用于存储字符串。这里是一个基本的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 5 // 栈的最大容量
typedef struct {
char stack[MAX_SIZE][50]; // 字符串数组,每个元素足够大存储字符串
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 入栈操作
void push(Stack *s, const char* str) {
if (is_full(s)) {
printf("Stack overflow! Can't push '%s'\n", str);
return;
}
strcpy(s->stack[++s->top], str);
}
// 出栈操作并返回字符串
char* pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow! No element to pop.\n");
return NULL;
}
char* temp = s->stack[s->top];
s->top--;
return temp;
}
int main() {
Stack s;
init(&s);
push(&s, "zhangsan");
push(&s, "wangwu");
push(&s, "lisi");
while (!is_empty(&s)) {
char* popped_str = pop(&s);
printf("Popped string: %s\n", popped_str);
}
return 0;
}
```
在这个例子中,我们首先初始化一个栈,然后按照顺序添加字符串"zhangsan", "wangwu", 和 "lisi"。每次出栈都会打印出被弹出的字符串,直到栈为空。