基本操作:
- 初始化栈
- 判断栈是否为空
- 判断栈是否已满
- 入栈
- 出栈
- 获取栈顶元素
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义栈的最大长度
typedef int ElemType; // 定义栈中元素的类型
typedef struct {
ElemType data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SqStack;
void InitStack(SqStack *st) // 初始化栈
{
st->top = -1; // 将栈顶指针初始化为-1
}
int StackEmpty(SqStack st) // 判断栈是否为空
{
if (st.top == -1)
return 1; // 栈为空
else
return 0; // 栈不为空
}
int StackFull(SqStack st) // 判断栈是否已满
{
if (st.top == MAXSIZE - 1)
return 1; // 栈已满
else
return 0; // 栈未满
}
int Push(SqStack *st, ElemType x) // 入栈
{
if (StackFull(*st)) // 如果栈已满
return 0; // 入栈失败
else
{
st->top++; // 栈顶指针加1
st->data[st->top] = x; // 将元素x存储到栈顶
return 1; // 入栈成功
}
}
int Pop(SqStack *st, ElemType *x) // 出栈
{
if (StackEmpty(*st)) // 如果栈为空
return 0; // 出栈失败
else
{
*x = st->data[st->top]; // 将栈顶元素存储到x中
st->top--; // 栈顶指针减1
return 1; // 出栈成功
}
}
int GetTop(SqStack st, ElemType *x) // 获取栈顶元素
{
if (StackEmpty(st)) // 如果栈为空
return 0; // 获取失败
else
{
*x = st.data[st.top]; // 将栈顶元素存储到x中
return 1; // 获取成功
}
}