堆栈的抽象数据类型描述:
-
类型名称: 堆栈(Stack)。
-
数据对象集: 一个有 0 个或多个元素的又穷表。
-
操作集: 长度为
max_size
的堆栈 S
∈ Stack
, 堆栈元素 item
∈ ElementType
。
-
stack creatc_stack(int max_size)
: 生成空堆栈, 其最大长度为 max_size
;
-
bool is_full(stack *s, int max_size)
: 判断堆栈 S 是否已满;
-
void push(stack *s, element_type item)
: 将元素 item
压入堆栈;
-
bool is_empty(stack *s)
: 判断堆栈 S
是否为空;
-
element_type pop(stack s)
: 删除并返回栈顶元素;
伪码描述:
#define MAX_SIZE 10 // 存储元素的最大个数
#define ERROE -1
#define bool int
#define True 1
#define Flase 0
// element_type 代表任意基本数据类型
typedef struct{
element_type data[MAX_SIZE];
int top;
} stack;
// 初始化一个栈
stack creatc_stack(void)
{
stack *s = (stack*)malloc(sizeof(stack));
s->top = -1;
return s;
}
// 入栈
void push(stack *s, element_type item)
{
if (s->top < MAX_SIZE-1){
s->data[(s->top)+1] = item;
s->top++;
}
}
// 出栈
element_type pop(stack *s)
{
element_type n = NULL;
if (s->top != -1){
n = s->data[(s->top--)];
}
return n;
}
// 判断堆栈是否为空
bool is_empty(stack *s)
{
bool flag = Flase;
if (s->top == -1){
flag = True;
}
return flag;
}
// 判断堆栈是否已满
bool is_full(stack *s, int MAX_SIZE)
{
bool flag = Flase;
if (s->top == MAX_SIZE-1){
flag = True;
}
return flag;
}