用c语言实现 用顺序表实现顺序栈SqStack,栈内数据域为char类型,实现栈的进栈、出栈、取栈顶元素。
时间: 2024-10-27 12:06:25 浏览: 12
顺序栈入栈出栈实现源码
5星 · 资源好评率100%
在C语言中,我们可以使用数组来实现一个基本的顺序栈(SqStack)存储`char`类型的元素。这里是一个简单的结构体定义和函数实现:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 定义栈的最大容量
typedef struct {
char data[MAX_SIZE]; // 数据域,存放char类型的元素
int top; // 栈顶指针,记录栈顶位置
} SqStack;
// 初始化栈
void initStack(SqStack *stack) {
stack->top = -1;
}
// 判断栈是否为空
int isEmpty(SqStack *stack) {
return stack->top == -1;
}
// 判断栈是否已满
int isFull(SqStack *stack) {
return stack->top == MAX_SIZE - 1;
}
// 进栈(入栈)
void push(SqStack *stack, char item) {
if (isFull(stack)) {
printf("Stack is full.\n");
return;
}
stack->data[++stack->top] = item;
}
// 出栈(退栈)
char pop(SqStack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return '\0'; // 返回空字符表示栈空
}
return stack->data[stack->top--];
}
// 取栈顶元素
char getTop(SqStack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return '\0';
}
return stack->data[stack->top];
}
// 测试示例
int main() {
SqStack myStack;
initStack(&myStack);
push(&myStack, 'a');
push(&myStack, 'b');
push(&myStack, 'c');
printf("Top element: %c\n", getTop(&myStack)); // 输出 'c'
printf("Popped element: %c\n", pop(&myStack)); // 输出 'c'
return 0;
}
```
在这个例子中,我们定义了一个顺序栈结构`SqStack`,并实现了初始化、判断空/满、入栈、出栈以及获取栈顶元素的基本操作。注意,在实际应用中,为了更好的管理内存,通常会使用动态分配的空间,而不是固定大小的数组。
阅读全文