先进后出——堆栈(Stack)
程序员文章站
2024-03-18 17:54:04
...
堆栈的抽象数据类型描述:
- 类型名称: 堆栈(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;
}
上一篇: unity开发之知识记录篇(color和string类型的相互转换)
下一篇: unity 转Pdf