l 栈: 1. 使用C语言定义栈的顺序存储结构(SeqStack),栈中存储的数据元素为字符型数据元素,并实现栈的以下基本操作: (1)初始化,即建空栈; (2)元素进栈; (3)元素出栈;
时间: 2024-12-08 08:17:31 浏览: 31
在C语言中,我们可以使用数组或动态内存分配来实现栈(SeqStack)。这里我们提供一个简单的基于数组的顺序存储栈示例,它包含初始化、入栈和出栈的基本操作。
首先,我们定义栈结构体,包含栈顶指针top和存储字符的数组:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 50 // 定义栈的最大容量
typedef struct {
char data[MAX_SIZE];
int top; // 栈顶指针
} SeqStack;
```
接下来,实现初始化函数(清空栈并设置top为0):
```c
void init(SeqStack *s) {
s->top = -1; // 初始化栈顶指针为-1表示栈为空
}
```
元素入栈(push)函数:
```c
void push(SeqStack *s, char item) {
if (s->top == MAX_SIZE - 1) {
printf("Stack is full.\n");
return;
}
s->data[++s->top] = item;
}
```
元素出栈(pop)函数:
```c
char pop(SeqStack *s) {
if (s->top == -1) {
printf("Stack is empty.\n");
return '\0'; // 返回空字符表示栈空
}
return s->data[s->top--];
}
```
现在你可以像这样使用这个栈:
```c
int main() {
SeqStack myStack;
init(&myStack);
push(&myStack, 'a');
push(&myStack, 'b');
push(&myStack, 'c');
char topItem = pop(&myStack); // 输出 c, 然后栈顶变为 b
printf("%c\n", topItem);
return 0;
}
```
阅读全文